I have a single maven project that has multiple main classes. I want to generate runnable Jars (that include all dependencies) out of these project. I currently have the following build configuration (using 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>
Is their a way to achive this with maven-assembly? If not, what is the simplest way to achive my goal?
You can do it. You'll need a separate execution for each artifact that you're building (i.e., give each its own id but you can leave the phase as default), and you'll need to specify the finalName and archive/manifest/mainClass for each.
<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>
I wasn't able to solve this problem with the maven-assembly-plugin
in a satisfying way, so I went for a different solution. I used the 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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With