I have a project (of type 'jar') that (obviously) builds a jar. But that project has many dependencies. I'd like Maven to build a "package" or "assembly" that contains my jar, all the dependent jars, and some scripts (to launch the application, etc.)
What's the best way to go about this? Specifically, what's the best way to get the dependents into the assembly?
Use the maven-shade-plugin to package all dependencies into one über-JAR file. It can also be used to build an executable JAR file by specifying the main class.
java is a main starting point which has main(String args[]) method inside. pom. xml file in which we will add Maven Plugins which will build executable . jar project with all included dependancies.
4. mvn package. This command builds the maven project and packages them into a JAR, WAR, etc.
For a single module, I'd use an assembly looking like the following one (src/assembly/bin.xml
):
<assembly> <id>bin</id> <formats> <format>tar.gz</format> <format>tar.bz2</format> <format>zip</format> </formats> <dependencySets> <dependencySet> <unpack>false</unpack> <scope>runtime</scope> <outputDirectory>lib</outputDirectory> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>src/main/command</directory> <outputDirectory>bin</outputDirectory> <includes> <include>*.sh</include> <include>*.bat</include> </includes> </fileSet> </fileSets> </assembly>
To use this assembly, add the following configuration to your pom.xml:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptors> <descriptor>src/assembly/bin.xml</descriptor> </descriptors> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
In this sample, start/stop scripts located under src/main/command
and are bundled into bin
, dependencies are bundled into lib
. Customize it to suit your needs.
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