If default distribution tasks are not sufficient, custom distribution archive can be created. using Maven Assembly Plugin.
Steps required to create custom distribution archive:
a) create your Unix and/or Windows start and stop scripts in /dist directory:
#!/usr/bin/env sh scriptdir=`dirname $0` classpath=$scriptdir/conf:$scriptdir/lib/* nohup java $* -cp "$classpath" play.core.server.ProdServerStart $scriptdir > $scriptdir/logs/system.out 2>&1 &
kill $(cat RUNNING_PID)
set scriptdir=%~dp0 set classpath=%scriptdir%/conf;%scriptdir%/lib/* java %* -cp "%classpath%" play.core.server.ProdServerStart %scriptdir%
set /p pid=< RUNNING_PID taskkill /F /PID %pid% del RUNNING_PID
b) create assembly descriptor assembly-dist.xml:
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>dist</id>
<formats>
<format>tgz</format>
<format>zip</format>
</formats>
<includeSiteDirectory>false</includeSiteDirectory>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/dist</directory>
<outputDirectory></outputDirectory>
<fileMode>755</fileMode>
<lineEnding>unix</lineEnding>
<includes>
<include>start</include>
<include>stop</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/dist</directory>
<outputDirectory></outputDirectory>
<lineEnding>windows</lineEnding>
<includes>
<include>start.bat</include>
<include>stop.bat</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/conf</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>600</fileMode>
<lineEnding>unix</lineEnding>
</fileSet>
<!-- empty 'logs' directory -->
<fileSet>
<directory>.</directory>
<outputDirectory>logs</outputDirectory>
<excludes>
<exclude>*/**</exclude>
</excludes>
</fileSet>
</fileSets>
<files>
<file>
<source>${basedir}/LICENSE</source>
</file>
<file>
<source>${basedir}/README</source>
</file>
<file>
<source>${project.build.directory}/${project.build.finalName}-sans-externalized.jar</source>
<outputDirectory>lib</outputDirectory>
<destName>${project.build.finalName}-sans-externalized.jar</destName>
<!-- or <destName>${project.groupId}.${project.build.finalName}-sans-externalized.jar</destName> -->
</file>
</files>
<dependencySets>
<dependencySet>
<scope>runtime</scope>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
<outputFileNameMapping>${artifact.artifactId}-${artifact.version}$\{dashClassifier?\}.${artifact.extension}</outputFileNameMapping>
<!-- or <outputFileNameMapping>${artifact.groupId}.${artifact.artifactId}-${artifact.version}$\{dashClassifier?\}.${artifact.extension}</outputFileNameMapping> -->
</dependencySet>
</dependencySets>
</assembly>
c) add configuration to pom.xml file, preferably in separate profile:
<profiles>
<profile>
<id>dist</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>sans-externalized-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>sans-externalized</classifier>
<excludes>
<exclude>application.conf</exclude>
<exclude>logback.xml</exclude>
<exclude>routes</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptors>
<descriptor>${basedir}/assembly-dist.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
d) generate distribution:
mvn package -Pdist