2010-02-03 192 views
33

我正在使用不同的插件(ant4eclipse)來打亂我的文件。什麼是避免maven-jar插件執行的最好方法?什麼是避免maven-jar的最好方法?

  • 我試圖刪除<plugin>maven-jar-plugin</plugin>
  • 我試圖<exclude> **/* </exclude>
  • 我試圖<skip>true</skip>

無奮力

+0

http://stackoverflow.com/questions/12809559/remove-jar-created-by-default-in-maven – fjjiaboming 2015-11-02 03:37:10

回答

1

會發生什麼事,如果你申報呢?

<packaging>pom</packaging> 

即使它做你想要的,要小心。我不確定是否會有負面影響 - 例如其他依賴於您的jar無法找到它的maven項目。

+0

這需要你重新綁定所有目標,因爲它會關閉編譯,測試等。 – 2010-02-04 13:37:10

0

我正在使用不同的插件打開我的文件。什麼是避免maven-jar插件執行的最好方法?

首先,jar:jar目標是bound by defaultpackage相對於jar型包裝的項目。其次,無法解綁綁定到階段的插件。所以,如果你使用另一個插件(?),要麼接受生產2個JAR或更改包裝(但我認爲這不會很好)。

+2

「無法解除綁定到階段的插件」 - 是不是在上面的答案中有''做了什麼? – 2014-06-24 10:30:57

3

將jar插件顯式綁定到不存在的階段。

+0

你確定嗎?我只是試過,我仍然看到'[INFO] [jar:jar {execution:default-jar}]'。 – 2010-02-03 01:49:53

+0

我已經使源插件以這種方式消失了,但我從來沒有擺脫過jar插件,所以我不確定。 – bmargulies 2010-02-03 02:47:29

1

正如其他人所說的,除了使用<packaging>pom</packaging>之外,不可能將其關閉,這會使所有的東西都關閉,而且可能不是您想要的。

即使它會生成兩次,一個可行的解決方案是將您的jar進程綁定到package階段,因爲這將保證在缺省之後運行。通過覆蓋相同的JAR文件,您會發現無論原始文件在哪裏,都會使用您的文件。

40

在Maven 3.0.x(我試過3.0.2)中,您可以通過將default-jar執行綁定到一個不存在的階段來禁用maven-jar-plugin,如@bmargulies suggested。不幸的是,這在2.2.1中不起作用,但是可以通過爲default-jar執行設置替代<finalName><classifier>來防止它干擾您自己的jar;它仍然會創建一個jar文件,但它將被設置爲該項目的輔助工件,並且不會覆蓋您創建的工件。下面是應該在這兩個的Maven 2和Maven 3的示例:如果您停用maven-jar-plugin

<project> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>test</groupId> 
    <artifactId>test</artifactId> 
    <version>0.1-SNAPSHOT</version> 

    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>default-jar</id> 
      <phase>never</phase> 
      <configuration> 
       <finalName>unwanted</finalName> 
       <classifier>unwanted</classifier> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

maven-install-plugin可以給你添麻煩了。在Maven 3中,可以禁用與maven-jar-plugin相同的功能:將default-install綁定到不存在的階段。但是,在Maven 2 maven-install-plugin中,需要存在target/classes目錄,並且在沒有主工件時它將安裝虛擬jar。

+1

謝謝,這很好。我做了同樣的從未與maven戰爭插件,並能夠關閉那個壞男孩。 :-) – 2011-07-23 01:06:54

+1

我很困惑你從哪裏獲得'default-jar'執行ID。我花了一段時間才注意到,Maven在每次執行時都會打印該ID: '[INFO] --- maven-install-plugin:2.3.1:install(default-install)@ myproj ---' 在這種情況下它是'default-install',但對於其他所有插件都是相似的。謝謝你的樣品。 – JBert 2013-08-06 10:04:09

+6

我認爲你應該改變'從不'到'沒有'因爲「never」不是maven-jar-plugin的有效階段。 – 2014-07-06 01:27:54

0
 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <skip>true</skip> 
      </configuration> 
     </plugin>   
+0

不工作(至少不是我在IDE內部使用Maven 3.0.4 – ZachOfAllTrades 2013-12-04 22:40:17

+0

上面提到的配置是錯誤的 - 我沒有看到任何配置上的選項配給。但是,這個選項有: true 這對於一些使用情況有效 - 你有一個沒有任何類的模塊 - 所以你不需要這個jar - 但是您確實想將包裝設置爲'jar'(因爲當您嘗試啓動位於該模塊的依賴路徑上的代碼時,將其設置爲pom會使Eclipse和Netbeans混淆) https://maven.apache。 org/plugins/maven-jar-plugin/jar-mojo.html – user2163960 2015-05-14 21:21:30

+0

這是一個錯誤的答案。跳轉開關有些不同。 Documention說:「將其設置爲true以完全忽略單元測試,其使用不推薦,但有時非常方便。」 – hennr 2016-05-22 12:07:18

22

這應該是關鍵 - 注意使用<id>default-jar</id><phase/>

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.4</version> 
     <executions> 
      <execution> 
      <id>default-jar</id> 
      <phase/> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
+2

和maven-install-plugin一樣,爲了防止* it *抱怨沒有產生任何神器。 – 2014-06-24 10:29:53

+2

這會產生無效的xml。我的Intelij抱怨xml有效性 – 2015-04-28 12:51:22

1

在我的情況下,我只想禁用jar插件,因爲jar是空的。您可以使用skipIfEmpty選項的插件配置

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>3.0.2</version> 
    <configuration> 
     <skipIfEmpty>true</skipIfEmpty> 
    </configuration> 
</plugin> 
相關問題