Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 47 Next »

A Maven 2 plugin that wraps the Cargo Java API

Functional tests

Icon

The usage of Cargo for executing functional tests on a container do not need this m2 plugin. You should directly use the Cargo Java API from your Java unit test classes (JUnit, TestNG, etc), as described on http://tinyurl.com/btmwa.

Installation

The Cargo m2 plugin is currently hosted on a private repository on codehaus. This repository is currently not synced to ibiblio so you'll need the following <pluginRepository> definition in your pom.xml if you want to use the Cargo plugin:

Features

Goals

Description

cargo:start

Start a container and optionally deploy J2EE archives

cargo:stop

Stop a container

cargo:deploy

Deploy a J2EE archive to a running container

Start/stop a container

Ability to start/stop a container (possibly deploying some deployables to it as it start). In this scenario Maven 2 is used as a convenience to easily and quickly start a container.

Example of m2 configuration:

Deploy to a running container

Ability to deploy to a remote container. Very useful for automating deployments with Maven (cargo:deploy).

Example of m2 configuration using a local deployer

In addition, if your project is of type war or ear the generated artifact will be automatically added to the list of deployables to deploy. You can control the location of the artifact by using the <deployableLocation> element (it defaults to ${project.build.directory}/${project.build.finalName}.${project.packaging}). In addition if you want to wait for the deployment to be finished you can specify a <pingURL> (none is used by default). Here's an example:

Example of m2 configuration using a remote deployer

Generate container configuration deployment structure

Ability to create a fully working custom configuration and possibly package some deployables in it. Then deliver this configuration as an artifact (cargo:package).

TODO

Additional notes and Todos

  • Proposal: We'll define a default for all configuration element so that just typing "mvn cargo:start" without any config will work. Let's use Jetty as the default container for war packaging (because it's the fastest to load) and Orion as the default for EAR packaging (again because it's the fastest we have for now - We really need to implement support for OpenEJB though).
  • TODO: For the deployer, allow replacing <type> by <class> if the user wants to specify his own deployer.

Tips

Starting mutiple containers conditionally

Maven 2 supports the notion of profiles which can be used with Cargo to decide for example when to run tests on a specific container. Here's how you could use the Cargo m2 plugin to that effect:

Then to start the tomcat 5.x container you would type mvn -P tomcat5x integration-test. if you want to start both containers you would type mvn -P tomcat5x,orion2x integration-test.

If you want to define a profile as the default you can use the <activation> element with an activation strategy. For example if you want a profile to be always on, use:

  • No labels