2014-01-06 48 views
1

我希望能夠使用Maven的組裝插件來產生不同的結果,這取決於行家電話嗎? 更確切地說:我想在mainClass之間切換。多Maven的組裝插件配置

這樣做的最好方法是什麼?我可以創建兩個不同的目標來完成這個任務嗎?或者我可以在調用程序集中使用一個參數:single?

我想到了類似於以下,但不知道如何選擇性地執行。

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
     <archive> 
      <manifest> 
      <mainClass>my.stuff.Main1</mainClass> 
      </manifest> 
     </archive> 
     <descriptorRefs> 
      <descriptorRef>-main1</descriptorRef> 
     </descriptorRefs> 
     </configuration> 
    </plugin> 

    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
     <archive> 
      <manifest> 
      <mainClass>my.stuff.Main2</mainClass> 
      </manifest> 
     </archive> 
     <descriptorRefs> 
      <descriptorRef>-main2</descriptorRef> 
     </descriptorRefs> 
     </configuration> 
    </plugin> 
+0

除了[MariuszS(https://stackoverflow.com/users/516167/mariuszs)【答案】(https://stackoverflow.com/a/20957723/27657),你也可以使用[編譯模式](http://maven.apache.org/guides/introduction/introduction-to-profiles.html)。 – javamonkey79

回答

2

也許這

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
    <archive> 
     <manifest> 
     <mainClass>${mainClass}</mainClass> 
     </manifest> 
    </archive> 
    <descriptorRefs> 
     <descriptorRef>${assemblyRef}</descriptorRef> 
    </descriptorRefs> 
    </configuration> 
</plugin> 

,並調用行家與參數-DmainClass=my.stuff.Main1 -DassemblyRef=-main1

爲了使這更容易使用,創建配置文件

<profiles> 
    <profile> 
     <id>main1</id> 
     <properties> 
     <mainClass>my.stuff.Main1</mainClass> 
     <assemblyRef>-main1</assemblyRef> 
     </properties> 
    </profile> 
    <profile> 
     <id>main2</id> 
     <properties> 
     <mainClass>my.stuff.Main2</mainClass> 
     <assemblyRef>-main2</assemblyRef> 
     </properties> 
    </profile> 
</profiles> 

與參數-Pmain1調用行家。