2014-01-06 46 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调用行家。