The following is a basic configuration of the plugin, and an example of usage based on a project generated with:
mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DgroupId=com.mycompany.app \ -DartifactId=my-app \ -Dversion=1.0-SNAPSHOT
Configuring the plugin in pom.xml:
<project> ... <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.10</version> <configuration> <programs> <program> <mainClass>com.mycompany.app.App</mainClass> <id>app</id> </program> </programs> </configuration> </plugin> </plugins> </build> </project>
$ mvn package appassembler:assemble ... $ sh target/appassembler/bin/app Hello World!
The following is a configuration example with more of the available options set.
<project> ... <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.10</version> <configuration> <!-- Set the target configuration directory to be used in the bin scripts --> <configurationDirectory>conf</configurationDirectory> <!-- Copy the contents from "/src/main/config" to the target configuration directory in the assembled application --> <copyConfigurationDirectory>true</copyConfigurationDirectory> <!-- Include the target configuration directory in the beginning of the classpath declaration in the bin scripts --> <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath> <!-- set alternative assemble directory --> <assembleDirectory>${project.build.directory}/mycompany-assemble</assembleDirectory> <!-- Extra JVM arguments that will be included in the bin scripts --> <extraJvmArguments>-Xms128m</extraJvmArguments> <!-- Generate bin scripts for windows and unix pr default --> <platforms> <platform>windows</platform> <platform>unix</platform> </platforms> <programs> <program> <mainClass>com.mycompany.app.WindowsApp1</mainClass> <id>app1</id> <!-- Only generate windows bat script for this application --> <platforms> <platform>windows</platform> </platforms> </program> <program> <mainClass>com.mycompany.app.UnixApp2</mainClass> <id>app2</id> <!-- Only generate unix shell script for this application --> <platforms> <platform>unix</platform> </platforms> </program> <program> <mainClass>com.mycompany.app.App3</mainClass> <commandLineArguments> <!-- Add two predefined command line arguments to the call of App3 --> <commandLineArgument>arg1</commandLineArgument> <commandLineArgument>arg2</commandLineArgument> </commandLineArguments> <id>app3</id> </program> <program> <mainClass>com.mycompany.app.App4</mainClass> <id>app4</id> </program> </programs> </configuration> </plugin> </plugins> </build> </project>