executablewar
=============
This package can be overlaid into a WAR file to make it executable,
automatically loading the WEB-INF/lib directory into the classpath
and launching a different main class.
Add the magic block to your Maven pom.xml, setting the value of
`Executable-War-Package` to the package of your main classes.
With this magic in place, users can execute your WAR file as
a standard JAR, including the class name on the command line:
====
java -jar your.war Action ...
====
At runtime the class `${Executable-War-Package}.${Action}` will be
loaded dynamically from the WEB-INF/lib directory and its static
main method will be invoked with all remaining arguments.
Files under `WEB-INF/` may also be accessed by the built-in actions
`--ls` (list files) and `--cat` (output content to standard out).
This may be useful for user-level documentation to unpack resources
packaged with the application. The `WEB-INF`/ prefix is assumed by
these actions, and should not be specified on the command line.
pom.xml magic
-------------
====
org.apache.maven.plugins
maven-war-plugin
ExecutableWarMain
your.package.prefix
org.apache.maven.plugins
maven-dependency-plugin
make-executable
generate-resources
unpack
gerrit
executablewar
true
${project.build.directory}/executablewar
**/*.class
maven-antrun-plugin
fix-output
process-classes
run
gerrit
executablewar
1.0-SNAPSHOT
provided
====