The tomcat maven plugin comes with handy exec-war-only goal that will bundle a standalone tomcat server in an executable jar. Add following configuration to your pom file:
org.apache.tomcat.maven tomcat7-maven-plugin 2.0 tomcat-run exec-war-only package /
And when you run the package goal, another artifact called myapp-x.y-war-exec.jar will be created. To run this simply execute java -jar myapp-x.y-war-exec.jar on a terminal shell.
The jar also comes with several options of which you can view by giving –help flag. The -httpPort is often useful to setup few testing environments:
C:\myapp>java -jar myapp-1.0-war-exec.jar --help
usage: java -jar [path to your exec war jar]
-ajpPort ajp port to use
-clientAuth enable client authentication for
https
-D key=value
-extractDirectory path to extract war content,
default value: .extract
-h,--help help
-httpPort http port to use
-httpProtocol http protocol to use: HTTP/1.1 or
org.apache.coyote.http11.Http11Nio
Protocol
-httpsPort https port to use
-keyAlias alias from keystore for ssl
-loggerName logger to use: slf4j to use slf4j
bridge on top of jul
-obfuscate obfuscate the password and exit
-resetExtract clean previous extract directory
-serverXmlPath server.xml to use, optional
-uriEncoding connector uriEncoding default
ISO-8859-1
-X,--debug debug