If you don't use any extraJvmArguments nor JvmSettings at all like the following configuration:
<project>
...
<build>
<plugins>
<plugin>
...
<configuration>
<programs>
<program>
<mainClass>com.mycompany.app.App</mainClass>
<id>app</id>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>
</project>The generated script (in this case Unix) will look like the following (license header removed):
#!/bin/sh
..
..
BASEDIR=`dirname $0`/..
BASEDIR=`(cd "$BASEDIR"; pwd)`
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
case "`uname`" in
CYGWIN*) cygwin=true ;;
Darwin*) darwin=true
if [ -z "$JAVA_VERSION" ] ; then
JAVA_VERSION="CurrentJDK"
else
echo "Using Java version: $JAVA_VERSION"
fi
if [ -z "$JAVA_HOME" ] ; then
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# If a specific java binary isn't specified search for the standard 'java' binary
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD=`which java`
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly."
echo " We cannot execute $JAVACMD"
exit 1
fi
if [ -z "$REPO" ]
then
REPO="$BASEDIR"/repo
fi
CLASSPATH=$CLASSPATH_PREFIX:"$BASEDIR"/etc:"$REPO"/org/codehaus/mojo/appassembler-maven-plugin/...
EXTRA_JVM_ARGUMENTS=""
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$HOME" ] && HOME=`cygpath --path --windows "$HOME"`
[ -n "$BASEDIR" ] && BASEDIR=`cygpath --path --windows "$BASEDIR"`
[ -n "$REPO" ] && REPO=`cygpath --path --windows "$REPO"`
fi
exec "$JAVACMD" $JAVA_OPTS \
$EXTRA_JVM_ARGUMENTS \
-classpath "$CLASSPATH" \
-Dapp.name="app" \
-Dapp.pid="$$" \
-Dapp.repo="$REPO" \
-Dbasedir="$BASEDIR" \
com.mycompany.app.App \
"$@"If you need to setup memory settings for all of your generated scripts this can be achieved by using the extraJvmArguments.
<project>
...
<build>
<plugins>
<plugin>
...
<configuration>
<extraJvmArguments>-Xms16m</extraJvmArguments>
<programs>
<program>
<mainClass>com.mycompany.app.App</mainClass>
<id>app</id>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>
</project>The settings of the extraJvmArguments is not limited to memory settings. You can use any kind of definition for the Jvm. It's more important that you can use place holders for the @REPO@ and for the @BASEDIR@. They are also given to the application by the following system properties by default.
-Dapp.repo="$REPO" \ -Dbasedir="$BASEDIR" \
The configuration to use extraJvmArguments looks like this:
<project>
...
<build>
<plugins>
<plugin>
...
<configuration>
<extraJvmArguments>-Dpar1=@BASEDIR@ -Dpar2=@REPO@</extraJvmArguments>
<programs>
<program>
<mainClass>com.mycompany.app.App</mainClass>
<id>app</id>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>
</project>You can also use a complete JvmSettings with different parameters per program if you need to change that.
<project>
...
<build>
<plugins>
<plugin>
...
<configuration>
<programs>
<program>
<mainClass>com.mycompany.app.App</mainClass>
<id>app</id>
<jvmSettings>
<initialMemorySize>20m</initialMemorySize>
<maxMemorySize>256m</maxMemorySize>
<maxStackSize>128m</maxStackSize>
<systemProperties>
<systemProperty>anton=2345</systemProperty>
<systemProperty>berta="xaz"</systemProperty>
</systemProperties>
<extraArguments>
<extraArgument>-Dtest=false</extraArgument>
<extraArgument>-Dlog4j.properties=false</extraArgument>
</extraArguments>
</jvmSettings>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>
</project>The generated script contains now the parameters for the above information in the following manner:
... EXTRA_JVM_ARGUMENTS="-Xms20m -Xmx256m -Xss128m -Dtest=false -Dlog4j.properties=false -Danton=2345 -Dberta="xaz"" # For Cygwin, switch paths to Windows format before running java if $cygwin; then [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --windows "$CLASSPATH"` [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` [ -n "$HOME" ] && HOME=`cygpath --path --windows "$HOME"` [ -n "$BASEDIR" ] && BASEDIR=`cygpath --path --windows "$BASEDIR"` [ -n "$REPO" ] && REPO=`cygpath --path --windows "$REPO"` fi exec "$JAVACMD" $JAVA_OPTS \ $EXTRA_JVM_ARGUMENTS \ -classpath "$CLASSPATH" \ -Dapp.name="app" \ -Dapp.pid="$$" \ -Dapp.repo="$REPO" \ -Dbasedir="$BASEDIR" \ com.mycompany.app.App \ "$@"