Cargo offers differents ways of using it at different levels:
- Module Java API: A Java API to parse/create/merge J2EE Modules (WAR, EAR, etc)
- Container Java API: A Java API to start/stop/configure Java Containers and deploy modules into them.
- Generic Java API: A Java API that sits on top of the Container API but allows writing generic code that works with any container. It consists mostly in a set of Factory classes to instantiate Container API objects by name.
- Build and IDE plugins
- Ant tasks: A set of Ant tasks that wrap the Generic Java API
- Maven 2: A Maven 2 plugin
- Cargo versins prior to 1.1.0 also used to have a Maven1 plugin. That plugin has been removed in version 1.1.0 (May 2011) since Maven3 does not support Maven1 plugins nor repositories anymore and the latest user inquiry on that old plugin was in 2007.
- IDE plugins
- Maven2/Maven3 plugin
The main Container API objects are:
- The Container is the top level interface wrapping a real physical container. Cargo supports local and remote containers. A Container is composed of a Configuration.
- A Configuration tells Cargo how the container is to be configured (whether it should create a standalone setup, whether it should be based on an existing configuration, etc). A Configuration can be configured to install Deployables before the Container is started.
- You can use a Deployer to hot-deploy Deployables (i.e. after the Container is started).
- Deployables are archives to be deployed in the Container. They are WAR, EAR, EJBs, etc.