Cargo provides Ant tasks to perform all the operations available from the Java API. The minimum supported version is Ant 1.9.15. |
As documented in CVE-2020-1945, Apache Ant versions 1.1 to 1.9.14 and 1.10.0 to 1.10.7 use the default temporary directory identified by the Java system property We hence strongly recommend only using Apache Ant versionĀ 1.9.16 and above (if you need to stick to the Apache Ant 1.9.x branch), or Apache Ant version 1.10.11 and above in general. |
The usage of Cargo for executing functional tests on a container does not mandate these Ant tasks. You could directly use the Cargo Java API from your Java unit test classes (JUnit, TestNG, etc), as described on the Functional testing page. |
Before using the Ant API you need to register the Cargo Ant tasks into Ant. This is done in the following manner:
<taskdef resource="cargo.tasks"> <classpath> <pathelement location="${cargo-core-uberjar.jar}"/> <pathelement location="${cargo-ant.jar}"/> </classpath> </taskdef> |
Some additional dependencies might also be required for the Ant task. Please see the Installation page for details.
Here are the different task actions available to call on this plugin:
Action | Description |
---|---|
| Start a container. That task will:
Note: A container that's started with the |
| Start a container and wait for the user to press
|
| Stop a container. |
restart | Stop and start again a container. If the container was not running before calling |
| Create the configuration for a local container, without starting it. Note that the |
daemon-start | Start a container using the Cargo Daemon. |
daemon-stop | Stop a container using the Cargo Daemon. |
| Deploy a deployable to a running container. |
| Undeploy a deployable from a running container. |
| Undeploy and deploy again a deployable. If the deployable was not deployed before calling |
Many wonder the difference between the
|
Here's a full example showing how to deploy a WAR, and expanded WAR and an EAR in an Orion 2.x container. Please note that the output
and log
attribute are optional. The property
elements allow you to tune how the container is configured. Here we're telling it to start on port 8180 and to generate the maximum amount of logs in the container output
file.
<taskdef resource="cargo.tasks"> <classpath> <pathelement location="path/to/cargo-uberjar.jar"/> <pathelement location="path/to/cargo-ant-tasks.jar"/> </classpath> </taskdef> <cargo containerId="orion2x" home="c:/apps/orion-2.0.3" output="target/output.log" log="target/cargo.log" action="start"> <configuration> <property name="cargo.servlet.port" value="8180"/> <property name="cargo.logging" value="high"/> <deployable type="war" file="path/to/my/simple.war"/> <deployable type="war" file="path/to/my/expandedwar/simple"/> <deployable type="ear" file="path/to/my/simple.ear"/> </configuration> </cargo> |
It is also possible to load the configuration properties from a file - simply use the |
This example gives a walk through of how to get a Cargo Ant build to work with Tomcat 5.x .
war
target that properly generates a working war fileFollow the following steps to configure your build.xml
:
<property name="cargolib.dir" value="${basedir}/cargolib"/> |
cargo-uberjar
and cargo-antjar
as shown below:<property name="cargo-uberjar" value="${cargolib.dir}/cargo-core-uberjar.jar"/> <property name="cargo-antjar" value="${cargolib.dir}/cargo-ant.jar"/> |
Add additional properties for defining the following:
Property | Description |
---|---|
tomcat.home | Installation directory of tomcat5x |
tomcatlog.dir | This is where our logs are going to be generated |
tomcatconfig.dir | Cargo needs an empty config folder |
pathtowarfile | The full path of the war file e.g c:/devtools/myapp/dist/myfile.war |
Add the following code to your build.xml :
<taskdef resource="cargo.tasks"> <classpath> <pathelement location="${cargo-uberjar}"/> <pathelement location="${cargo-antjar}"/> </classpath> </taskdef> <target name="cargostart" depends="war"> <delete dir="${tomcatconfig.dir}" /> <mkdir dir="${tomcatlog.dir}"/> <mkdir dir="${tomcatconfig.dir}"/> <echo message="Starting Cargo..."/> <echo message="Using tomcat.home = ${tomcat.home} "/> <echo message="Using war = ${mywarfile} "/> <echo message="Jars used = ${cargo-uberjar} , ${cargo-antjar}"/> <cargo containerId="tomcat5x" home="${tomcat.home}" output="${tomcatlog.dir}/output.log" log="${tomcatlog.dir}/cargo.log" action="start"> <configuration home="${tomcatconfig.dir}"> <property name="cargo.servlet.port" value="8080"/> <property name="cargo.logging" value="high"/> <deployable type="war" file="${mywarfile}"/> </configuration> </cargo> </target> |
Here's a full example showing how to deploy a WAR to a remote Tomcat 6.x container.
<taskdef resource="cargo.tasks"> <classpath> <pathelement location="path/to/cargo-uberjar.jar"/> <pathelement location="path/to/cargo-ant-tasks.jar"/> </classpath> </taskdef> <cargo containerId="tomcat6x" action="deploy" type="remote"> <configuration type="runtime"> <property name="cargo.hostname" value="production27"/> <property name="cargo.servlet.port" value="8080"/> <property name="cargo.remote.username" value="admin"/> <property name="cargo.remote.password" value=""/> <deployable type="war" file="path/to/simple-war.war"> <property name="context" value="application-context"/> </deployable> </configuration> </cargo> |
For more details, please check the example in the Remote Container section for the Ant tasks. The Ant tasks support the deployer actions deploy
, undeploy
and redeploy
.