CARGO can be directly run on any existing Maven2 Java EE project (WAR, EAR or other) by running:
mvn clean verify org.codehaus.cargo:cargo-maven2-plugin:run
This will create a default Jetty 7.x installed local container and start it using the Cargo Maven2 plugin with your Maven2 project's deployable (a WAR, for example) deployed to it; so you can run manual tests (as a first introduction).
What is magic is that if you now want to run the same tests with Tomcat 7.x you simply need to run (in one line):
mvn clean verify org.codehaus.cargo:cargo-maven2-plugin:run -Dcargo.maven.containerId=tomcat7x -Dcargo.maven.containerUrl=http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.16/bin/apache-tomcat-7.0.16.zip
That command will automatically download Tomcat 7.0.16 from the specified URL (taking into account any proxy server setting you would have in Maven2/Maven3), instantiate the container, create a local configuration with your application and run it. It will also save the downloaded container in the default directory (see the Maven2 Plugin Reference Guide for details), so it won't get downloaded when you run the same command twice.
Now, if you want to run this time on Glassfish 3.x with with the HTTP port set to
mvn clean verify org.codehaus.cargo:cargo-maven2-plugin:run -Dcargo.maven.containerId=glassfish3x -Dcargo.maven.containerUrl=http://download.java.net/glassfish/3.1.1/release/glassfish-3.1.1.zip -Dcargo.servlet.port=9000
CARGO's main advantage is that the commands and configuration remains the same for any version of any container supported by CARGO -be it Tomcat, Jetty, JBoss, JOnAS, GlassFish, WebLogic, etc.
Like it? Well, keep on reading, then!
As usual the best way to learn to use a tool is through examples.
We have several Maven2 Archetypes that contain sample Maven2/Maven3 projects with different use cases for the CARGO plugin, we would really recommend that you check them out. For more details, read here: Maven2 Archetypes.
In addition here are the typical uses cases covered by the plugin:
Here are the different goals available to call on this plugin:
Start a container. That goal will:
Note: A container that's started with
Start a container and wait for the user to press
Stop a container.
|Stop and start again a container. If the container was not running before calling |
Package the local container.
Start a container via the daemon. Read more on: Cargo Daemon
|Stop a container via the daemon. Read more on: Cargo Daemon|
Deploy a deployable to a running container.
Undeploy a deployable from a running container.
Start a deployable already installed in a running container.
Stop a deployed deployable without undeploying it.
Undeploy and deploy again a deployable. If the deployable was not deployed before calling
Merge several WAR files into one.
Installs a container distribution on the file system. Note that the
Get help (list of available goals, available options, etc.).
The configuration elements are described in the Reference Guide section.