2010-11-04 77 views
16

我使用maven程序集插件打包jar文件。 但是當我運行mvn package時,maven總是觸發[jar:jar {execution:default-jar}]來創建默認的jar文件。 所以我將有2個jar文件(一個由assembly插件創建,另一個由maven jar創建,我不想創建)。我如何關閉執行:default-jar。禁用執行:默認jar

在我的pom.xml中,我正在使用: <packaging>jar</packaging>。我不想將其更改爲<packaging>pom</packaging>

回答

33

(...),所以我將有2個jar文件(一個由組件插件創建的jar和一個由maven jar創建的,我不想被創建的)。

看起來你正在做相當複雜的事情。也許Maven並不是你的案例中的正確工具。

如何關閉執行:default-jar。

可以相應的執行的<phase>設置爲未知的東西,像none

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.3.1</version> 
    <executions> 
     <execution> 
     <id>default-jar</id> 
     <phase>none</phase> 
     </execution> 
    </executions> 
    </plugin> 
    <plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
    <executions> 
     <execution> 
     <id>make-assembly</id> 
     <!-- this is used for inheritance merges --> 
     <phase>package</phase> 
     <!-- append to the packaging phase. --> 
     <goals> 
      <goal>single</goal> 
      <!-- goals == mojos --> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

這似乎只要你提供別的東西來安裝,像組裝工作(我只測試了install)。但當然,這是一個黑客。

+0

這是一個黑客攻擊,但知道這個黑客真是太棒了。謝謝! (+1) – 2010-11-05 09:08:42

+0

順便說一句,你有沒有睡過?你也是CET,不是嗎? – 2010-11-05 09:09:28

+0

@seanizer:LOL。是的,我確實:)不,我現在不是,我正在移動。 – 2010-11-05 12:22:10

3

雖然沒有直接回答這個問題,你可以排除Maven的罐子創建使用<useProjectArtifact>false</useProjectArtifact>

+0

謝謝Raghuram – David 2010-11-05 15:45:26