我有一个具有多个主类的maven项目。我想从这些项目中生成可运行的Jar(包括所有依赖项)。我目前有以下构建配置(使用maven.assembly):
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>classpath.to.my.mainClass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
他们是否可以通过Maven-assembly实现这一目标?如果没有,实现目标的最简单方法是什么?
我无法以maven-assembly-plugin令人满意的方式解决此问题,因此我选择了其他解决方案。我使用了onejar-maven-plugin:
maven-assembly-plugin
onejar-maven-plugin
<build> <plugins> <plugin> <groupId>org.dstovall</groupId> <artifactId>onejar-maven-plugin</artifactId> <version>1.4.4</version> <executions> <execution> <id>build-first</id> <configuration> <mainClass>classpath.to.first.Main</mainClass> <attachToBuild>true</attachToBuild> <classifier>onejar</classifier> <filename>first-runnable.jar</filename> </configuration> <goals> <goal>one-jar</goal> </goals> </execution> <execution> <id>build-second</id> <configuration> <mainClass>classpath.to.second.Main</mainClass> <attachToBuild>true</attachToBuild> <classifier>onejar</classifier> <filename>second-runnable.jar</filename> </configuration> <goals> <goal>one-jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <pluginRepositories> <pluginRepository> <id>onejar-maven-plugin.googlecode.com</id> <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url> </pluginRepository> </pluginRepositories>
你能行的。你需要一个单独的执行对于每一个工件,你建设(即给每个自己的ID,但你可以离开的阶段为默认值),你就需要指定finalName和存档/清单/ mainClass 每个。
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <id>build-a</id> <configuration> <archive> <manifest> <mainClass>foobar.Aclass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <finalName>foobar_a.jar</finalName> </configuration> </execution> <execution> <id>build-b</id> <configuration> <archive> <manifest> <mainClass>foobar.Bclass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <finalName>foobar_b.jar</finalName> </configuration> </execution> </executions> </plugin> </plugins> </build>