wiki:JarPackaging

Jar Packaging

If you don't use Kraken Core and need to deploy your program as simple as possible, you probably want to package all dependencies into just one jar file. In this case, you can use maven-jar-plugin and maven-assembly-plugin.

Step 1: Configure maven plugin

Add maven plugin configurations to your pom.xml. Replace YOUR_MAIN_CLASSNAME with your class name which has main() method:

<project>
...
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                        <addMavenDescriptor>false</addMavenDescriptor>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2-beta-2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <Main-Class>YOUR_MAIN_CLASSNAME</Main-Class>
                        </manifest>
                        <manifestEntries>
                            <Kraken-Version>${pom.version}</Kraken-Version>
                        </manifestEntries>
                    </archive>
                    <descriptors>
                        <descriptor>src/main/resources/assembly.xml
                        </descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
...
</project>

Step 2: Configure assembly.xml

Create assembly.xml in src/main/resources:

<assembly>
	<id>package</id>
	<formats>
		<format>jar</format>
	</formats>
	<includeBaseDirectory>false</includeBaseDirectory>
	<dependencySets>
		<dependencySet>
			<unpack>true</unpack>
			<outputDirectory>/</outputDirectory>
			<excludes>
				<exclude>junit:junit</exclude>
			</excludes>
		</dependencySet>
	</dependencySets>
</assembly>

You can exclude unnecessary dependencies using <exclude> tag. maven-assembly-plugin adds all dependencies by default.

Step 3: Build and Run

mvn package command will produce name-VERSION-package.jar.

Deploy this file and run it.

java -jar name-VERSION-package.jar