CARGO 1.3.1 is available

Dear CARGO enthusiasts

A few weeks after version 1.3.0, CARGO 1.3.1 is now ready -with the fixes for the below issues:

  • JBoss
    • JBoss 7.x and 7.1.x local deployer does not take into account WAR context if a shared or extra classpath needs to be set [CARGO-1156]
    • JBoss 7.x or 7.1.x datasource classes cannot come from shared classpath [CARGO-1157]
  • Jetty:
    • Upgrade the Jetty 9.x container to support Jetty 9.0.0.M1 and 9.0.0.M2 [CARGO-1152]
  • WebSphere
    • WebSphere deployment fails for WARs with <display-name> set [CARGO-1153]
  • Daemon
    • CARGO daemon does not work with Jetty [CARGO-1155]
    • Daemon Java client cannot start container when ZipUrlInstaller is set [CARGO-1158]
    • Daemon Java client throws NullPointerException if no deployables have been set [CARGO-1159]
    • NullPointerException on daemon webapp in some situation [CARGO-1154]

It also comes with one small improvement: the directory where to deploy web archives for Tomcat installed containers is now taken from server.xml file [CARGO-455]. Moreover, we have added some automated tests for the Cargo Daemon [CARGO-1150].

To upgrade to this new version:



Dear CARGO enthusiasts

Our next big release of CARGO, version 1.3.0, is now available! It comes with a lot of very attractive new features:

  • The newest and latest Jetty 9.x is supported [CARGO-1147]
  • IBM WebSphere 8.5.x container has been added -making another very old CARGO ticket get solved! [CARGO-147]
  • We have introduced a new feature, the Cargo Daemon: this is a Web-based application that uses the Cargo API to configure, start and stop containers on a remote machine. The daemon is meant to be listening 24/7, to allow users to deploy new containers and web applications at their command. It can be accessed using a browser-based UI, via Java API or Maven2 plugin. [CARGO-1148]
  • Local and embedded deployer support has been added to the ANT plugin [CARGO-1144]

The Apache Geronimo container has been improved a lot as well:

  • Bundle support has been added to Geronimo 3.x [CARGO-1143]
  • Extra classpath can now be set on Geronimo 2.x and 3.x [CARGO-1145]
  • It is now possible to define datasources on Geronimo 2.x and 3.x [CARGO-1146]

We have also fixed some JBoss issues (all of them on JBoss 7.x and 7.1.x):

  • Non-default deployment directory is now supported [CARGO-1141]
  • GeneralPropertySet.RUNTIME_ARGS is now set at the correct place [CARGO-1139]
  • Extra and shared classpath is now fully supported [CARGO-1149]

As for the other fixes and improvements:

  • Direct configuration of SSL/TLS connector options for Tomcat 5.x, 6.x, and 7.x stand alone local configurations is allowed [CARGO-1135]
  • OC4J's MIME types now has text/css [CARGO-281]
  • Property injection from Maven settings.xml has been fixed [CARGO-1136]
  • Non 200 HTTP status codes are accepted by the deployment's ping component [CARGO-1118]
  • Shared classpath for WARs are now supported on Jetty [CARGO-948]

To try this new version:


Dear CARGO users

After about one month from the last release, CARGO 1.2.4 is now here! It comes with three important new features:

  • WebLogic 12.x support has been added (CARGO-1132)
  • Geronimo 3.x is now supported (CARGO-1126)
  • Geronimo 2.x and 3.x containers are able of working with existing standalone configurations (CARGO-1127)
  • Jetty 8.x now supports ServletContainerInitializers (CARGO-1133)

Apart form that, this versions also comes with some bug fixes:

  • Exception messages when the user defines no ContainerId but uses a ZipUrlInstaller or ArtifactInstaller have been improved (CARGO-1128)
  • Exception messages when one attempts to use a local deployer for a non-existing directory have been improved (CARGO-1131)
  • Cargo plugin does not expect to be executed from inside .jar anymore (CARGO-1129)

Full release notes are accessible on

To try this new version:


Dear CARGO enthousists.

After about two months from the last release, CARGO 1.2.3 is now ready.

This new version comes with only one new feature, support for setting JBoss AJP ports (CARGO-1112).

Apart from that, this version fixes the below bugs:

  • ANT tasks and Maven2/Maven3 plugin:
    • The cargo:run MOJO and run ANT task now try to stop the container (via shutdown hook) when CTRL + C is pressed (CARGO-1124)
  • Maven2/Maven3 plugin fixes:
    • cargo:run now deploys all WARs; as the <deployables> element has been centralized (CARGO-1114)
    • The intreaction between the CARGO Maven2/Maven3 plugin and Maven proxy settings have been reviewed to function in an homogeneous manner (CARGO-1119 and CARGO-1121)
  • General fixes:
    • The configuration of <cargo.servlet.users> does not require a role anymore (CARGO-526)
  • Container-specific fixes:
    • Jetty 7.x and 8.x Remote Deployment now works properly if Jetty-JNDI is active (CARGO-1122 and CARGO-1123)
    • Jetty installed local deployer has been fixed to be able of deploying sub-contexts (CARGO-1125)
    • jboss.server.lib.url is now correctly handled (CARGO-1110)
    • WARs can now be deployed on JBoss 7.x and 7.1.x containers' root context (CARGO-1090)
    • JBoss 7.x and 7.1.x contains' bind address can now be set to (CARGO-1111)
    • Tomcat NIO connectors now work properly with CARGO (CARGO-1115)

The full release notes are accessible on

To try this new version:

We have another amazing news to share: over the last 12 months, overall download count of the CARGO components have gone up 60%. See below, for example, for the Maven2/Maven3 plıugin:

We thank you again for your continuing interest.


CARGO 1.2.2 available!

Dear CARGO enthusiasts

After about 7 weeks after the last release, I decided we have enough changes and fixed bugs in order to go ahead with CARGO 1.2.2. As for what's new, the list is this time small (12 entries):

Improvements and new features (5)

    • Jetty containers now support datasources (CARGO-1107)
    • Jetty 7.x standalone local container is now the default container for the CARGO Maven2/Maven3 plugin (CARGO-1106) and downloads its container via the artifactInstaller
    • The usage of an external jetty-env.xml file has finally been documented (CARGO-861)
    • The XML/properties replacement engine can now WARN when a replacement is not possible (instead of failing) (CARGO-1099)
    • Deployers (and mostly undeployers) can now intelligently ignore failures when deploy/undeploy fails (for example, if the application is not deployed but one attempts to undeploy it) (CARGO-1100)

Bug fixes (7)

    • Proxies that would be previously set by Maven are not used during deployment anymore (CARGO-1042)
    • Module names in JBoss do not contain any periods anymore -allowing the deployment of datasources via Maven2/Maven3 plugin (CARGO-1091)
    • Logging level is now interpreted properly for containers that output their messages on stderr (CARGO-1095)
    • Jetty can deploy to root (/) context (CARGO-1103)
    • cargo.jboss.invoker.pool.port configuration property works properly for JBoss 5+ (CARGO-1104)
    • Merging of XML files doesn't throw a ConcurrentModificationException anymore (CARGO-1105)
    • JVM properties on Glassfish now work (CARGO-1108)

In addition to these, we have done various changes in the documentation as well as the Maven archetypes. For example, a profile for JBoss 7.1.x has been added to all archetypes and is configured with an artifactInstaller.

The full release notes can be found on

To use this new version:

  • Users of the Java API and/or the ANT tasks can download the required components (be it the uberjar, ANT tasks and others) via the CARGO Downloads page.
  • Users of the Maven2/Maven3 plugin simply need to change their plugin version to 1.2.2.

Please provide your feedback to the mailing list.


Dear CARGO enthusiasts

CARGO 1.2.1 is now available; and no this is definitely not an April fool!

Of course, all of you are wondering what that release brings in... As usual, we have a certain number of fixes and improvements; major highlights are:

  • 12 bug fixes, be it for core components but also for containers.
  • CARGO now supports starting an installed local container independently from the starting instance (Java API, ANT or Maven2/Maven3 plugin); so that the started container can "outlive". This new feature is called spawning.
  • The Jetty container now supports existing local configuration.
  • JBoss 7.1.0 and 7.1.1 (Final versions) are supported.
  • The XML merger (i.e., uberwar) now does a much more careful work when it comes to merging duplicate XML entities.

To use this new version:

  • Users of the Java API and/or ANT tasks can download the CARGO uberjar and ANT tasks from the download page:
  • Maven2/Maven3 users simply need to change the plugin's <version> to 1.2.1, and Maven2/Maven3 will download the new version automatically.

Please share your good (and bad) findings on the mailing list.

As usual, for those who are wondering, please find below the full change list:

  • The following issues with the XML merger (i.e., uberwar) have been fixed:
    • [CARGO-1078] - Duplicate entries when merging <filter-mapping>
    • [CARGO-1080] - Duplicate entries when merging servlet mappings
    • [CARGO-1081] - Duplicate entries when merging security constraints
    • [CARGO-1094] - Duplicate init-param element when merging filter
    • [CARGO-1096] - XML merger adds xmlns="" entries
  • JBoss-specific fixes:
    • [CARGO-1086] - CARGO doesn't work with JBoss 7.1.0.Final
    • [CARGO-1087] - remote deployment to JBoss AS 7.1.0.Final in standalone configuration leads to
    • [CARGO-1088] - Undeploy fails with a non-farm configuration
  • Jetty-specific fixes:
    • [CARGO-1085] - WAR authentication does not work with embedded Jetty 7.6.x and 8.1.x
  • GlassFish-specific fixes:
    • [CARGO-1077] - Standalone GlassFish configuration deletes all existing GlassFish domain when started
  • Tomcat-specific fixes:
    • [CARGO-1082] - CARGO does not create the list of roles in the Tomcat users XML
  • Fixes relating to the Maven2/Maven3 plugin:


  • General improvements:
    • [CARGO-364] - Allow spawned execution of an local containers to enable the app server to outlive the calling CARGO application (Java API, ANT or Maven2/Maven3)
  • XML merger (i.e., uberwar) improvements:
    • [CARGO-1079] - Add support for merging <mime-mapping>
  • Jetty-specific improvements:
    • [CARGO-1083] - Add Jetty support to existing local configuration for installed container
    • [CARGO-1093] - Allow jetty existing local container to start using only configuration on the server
  • GlassFish-specific improvements:
    • [CARGO-1071] - Allow to start GlassFish domain in debug mode
    • [CARGO-1072] - Allow to set GlassFish debugger port
  • Improvements on the Maven2/Maven3 plugin
    • [CARGO-1097] - Make use of maven artifact when computing location for deployable and dependency

You can also see the HTML release notes via


CARGO 1.2.0 now available!

Dear CARGO enthusiasts

First of all, happy New Year!

Since the last release of CARGO a bit more than one month and a half ago, we have had the opportunity of fixing some bugs and adding the functionalities:

  • CARGO Maven2/Maven3 plugin fixes and improvements:
    • ContainerStopMojo now can resolve dependencies with scope <test>, the same way ContainerRunMojo and ContainerStartMojo can (CARGO-1069 and CARGO-527).
    • The functional-tests artifact of the Separate Functional Test Module Archetype now uses packaging=jar and is compatible with m2e (CARGO-1065).
    • The CARGO plugin now resolves the required container JARs automatically (CARGO-975), meaning that if you're for example only using CARGO with the Jetty container than the other containers' JARs will not be downloaded.
  • Fixed a bug where the JSR-88 deployers' (used by the GlassFish remote deployer) undeploy method ignored the EAR's name ( CARGO-1076).
  • All CARGO JBoss containers, from the 10-year-old JBoss 3.x to the brand-new JBoss 7.1.x, now support datasources (CARGO-426). You can therefore now use CARGO to deploy datasources to any JBoss container; the bigger advantage being that the datasource definitions don't need to change between JBoss versions nor between all containers that CARGO can deploy datasources to.
  • The JOnAS remote deployer now works with Windows for XML deployment plans (CARGO-1067).
  • The Resin container has been improved:
  • Last but not least, the new XML replacement API introduced in CARGO 1.1.4, which avoids having CARGO-specific container configuration files in the distribution, is now used more extensively; as the Jetty (CARGO-1060), Resin (CARGO-1075) and Tomcat (CARGO-1061) container also make use of it.
    • This way, not only we won't have to maintain these CARGO-specific files manually anymore, but also new versions will be supported "out of the box" and CARGO will also work with different flavours of containers.

CARGO 1.2.0 is therefore now ready. Please note that on the API side, this new minor version comes with some behavioural changes and the removal of some elements (which have been deprecated for over 6 months now):

  • To achieve automatic resolution of container JARs in the Maven2/Maven3 container, a small change has been done in the ResourceUtils: it now loads resources using a class loader (as opposed to a class, which was the case in the past), hence AbstractLocalConfiguration.RESOURCE_PATH has been changed from "/org/codehaus/cargo/container/internal/resources/" to "org/codehaus/cargo/container/internal/resources/" (without the slash at the beginning). If your code uses the same constant, make sure you update it properly.
  • The Deployable.isExpanded* and AbstractCopyingInstalledLocalDeployer.setShouldDeployExpanded*s methods have been removed (CARGO-905 and CARGO-940). As a replacement:
    • The Deployable type has a generic isExpanded method.
    • AbstractCopyingInstalledLocalDeployer has a generic method setShouldDeployExpanded with two arguments.
  • File handling methods that manipulate texts now need to specify the encoding (CARGO-909).
  • In the Maven2/Maven3 plugin, the <zipUrlInstaller> and <artifactInstaller> don't have the <installDir> attribute anymore, replaced by <downloadDir> and <extractDir> attributes (CARGO-916).
  • TomcatPropertySet.MANAGER_URL (i.e. cargo.tomcat.manager.url) has been removed (CARGO-965), please use the generic RemotePropertySet.URI (i.e. cargo.remote.uri) instead.

You can access the full release notes by visiting

To use this new version:

  • Users of the Java API and/or ANT tasks can download the CARGO uberjar and ANT tasks from the download page:
  • Maven2/Maven3 users simply need to change the plugin's <version> to 1.2.0, and Maven2/Maven3 will download the new version automatically.

Please share your good (and bad) findings on the mailing list.


CARGO 1.1.4 now available!

Dear CARGO enthusiasts

About 8 weeks have passed since the last CARGO release. During these weeks, some fixes and improvements have been implemented in CARGO and the new version 1.1.4 is now ready. These changes include:

  • General:
    • Harmonized the behaviour when copying configuration files, now both <file> and <configfiles> can copy directories [CARGO-1045]
    • Improved the module hierarchy and dependencies [CARGO-1011]
      • This way, the CARGO Maven2 plugin doesn't use the uberjar anymore but rather the individual artifacts
    • Cleaned notes about old CARGO versions from documentation [CARGO-997]
    • Corrected Javadoc for MergeStrategy.inRight() [CARGO-1046]
  • JBoss:
    • JBoss 7.1.0 beta 1 is now supported [CARGO-1063]
    • The JBoss 5.x and 6.x remote deployers now take into account username and password [CARGO-1058]
    • JBoss 5.x, 5.1.x, 6.x, 6.1.x and 7.x local containers don't have cargo-specific XML files anymore [CARGO-839]
  • Jetty:
    • Fixed compatibility issues between the remote Jetty deployer and jetty-hightide (Jetty@Codehaus) [CARGO-983]
    • Remote Jetty deployer now works with Jetty 8.x with the default OPTIONS [CARGO-1049]
    • Fixed the default CARGO OPTIONS for the Jetty 8.x container [CARGO-1050]
  • JOnAS:
    • Remote deployer can now undeploy deployment plans on JOnAS 5.x [CARGO-1047]
    • The standalone JOnAS container can now set any JOnAS configurator property [CARGO-1054]
    • The modular ANT tasks are used when configuring the latest JOnAS 5.3 milestones [CARGO-1057]
    • The JOnAS remote deployer has a new "ignore version" option [CARGO-1048]
  • GlassFish:
    • GlassFish2xAsAdmin now takes into account the timeout set in the container [CARGO-1055]
  • Maven2/Maven3 plugin:
    • Different executions can now have different configuration options [CARGO-1053]

You can access the full release notes by visiting

To use this new version:

  • Users of the Java API and/or ANT tasks can download the CARGO uberjar and ANT tasks from the download page:
  • Maven2/Maven3 users simply need to change the plugin's <version> to 1.1.4, and Maven2/Maven3 will download the new version automatically.

Please share your good (and bad) findings on the mailing list.


CARGO 1.1.3 now available!

Dear CARGO enthusiasts

CARGO 1.1.3 is now ready. You're probably wondering what's in it for you; so here is a quick overview:

  • The pingURL is no more ignored when using redeploy [CARGO-1036]
  • All deployers now support the redeploy method (with and without monitor) [CARGO-1038]
  • The JBoss container has gained in functionality and stability:
    • JBoss 6.1.x support has been added [CARGO-1043]
    • Corrected the capabilities of the JBoss 7.x remote container [CARGO-1044]
    • Shared classpath does not cause on Windows anymore [CARGO-1024]
    • JBoss standalone local configuration creation now works even with deployables with certain names [CARGO-1037]
  • Jetty-specific fixes and improvements:
    • The latest version of Jetty, version 8, is now supported. [CARGO-1028]
    • You can now provide your own Jetty context XML file [CARGO-1027] on Jetty 6.x, 7.x and 8.x
  • The GlassFish container has been improved:
    • Extra classpath support has been added [CARGO-1034]
    • In addition, GlassFish containers now also support Datasources [CARGO-1035]
    • That's not all: you can now use Existing Local Configuration for an installed GlassFish container [CARGO-1039]
    • Finally, the GlassFish deployer has been improved to recognize failures correctly [CARGO-1032]
  • The Tomcat container has two bugs corrected:
    • A bug making the Tomcat container throw a ClassNotFoundException with default logging properties has been fixed [CARGO-1031]
    • Deployment of a WAR with a subcontext works back again [CARGO-1041]
  • In the containers' documentation's "properties" part, the "comments" column has been replaced with a link to Javadoc [CARGO-1029]

The full release notes can be found on:


CARGO 1.1.2 now available!

Hi CARGO enthusiasts

CARGO 1.1.2 is now ready, it comes with a number of new features and bug fixes.

On the new features and improvements side:

  • CARGO now supports JBoss 7! (CARGO-1014)
  • We have added new Maven2/Maven3 archetypes:
  • Many CARGO components are now much easier to use:
    • Configuration properties can now be set using Java system properties (-Dxxx=yyy) (CARGO-1007, CARGO-1009)
    • The CARGO JBoss remote deployers are not needed to be in the classpath anymore, they're part of the JBoss container and are loaded dynamically (CARGO-1015)
  • The cargo:run mojo is now much easier to use, and in many cases requires no plugin configuration at all:
    • Configuration properties can now be set using Java system properties (-Dxxx=yyy) (CARGO-1007, CARGO-1009)
    • New attributes: containerId and containerUrl (CARGO-970)

You can read our reworked Maven2/Maven3 plugin getting started guide, and realize how easy it now is to use CARGO on any existing Maven2/Maven3 Java EE project; no configuration is required at all!

Of course, there are also some bug fixes:

  • The Cargo Maven2/Maven3 deployer no more ignores deployables in the <configuration> element of the container (CARGO-1002)
  • Adding a configuration file to a non-existing target directory does not result in FileNotFoundException anymore (CARGO-1004)
  • The Maven2/Maven3 mojos now enable the logger in debug mode (CARGO-1010)
  • The remote deployers now get their logger from the configuration (CARGO-1012)
  • Some UberWar fixes:
    • Dollar sign in value no more breaks NodeMerge strategy (CARGO-1016)
    • Comma can now serve as a pattern end mark (CARGO-1017)
    • Left side expression no more appears twice in the merged result (CARGO-1018)
  • cargo:deploy on JBoss now works even when internet is unavailable (CARGO-1019)
  • The JOnAS installed local deployer does not show an incorrect warning anymore (CARGO-1021)


Cargo Gradle plugin

Hi Cargo and Gradle lovers

A while ago Ben has released the first version of the Cargo plugin for Gradle.

The plugin provides deployment capabilities for web applications to local and remote containers in any given Gradle build by leveraging the Cargo Ant tasks. It extends the Gradle War plugin.

The plugin provides most of the functionality you might know from the Cargo Maven plugin or the Ant tasks; in fact internally it uses the Cargo tasks.

Any feedback is highly welcome and Ben announced he would love to improve the plugin to support all the functionality you were used to from other Cargo integrations. Please have a look at the README file for the current functionality.


CARGO 1.1.1 is here!

Hi CARGO enthusiasts;

CARGO 1.1.0 has been out for just over a month now, and we have had important bug fixes and improvements since. We therefore are very happy to announce CARGO 1.1.1.

Wonder what has changed? Here is a short list:

  • A certain number of user inquiries made us realize that there has been a confusion around the wait parameter of the start ANT task and Maven goal of CARGO. Indeed, most other similar tools have a clearer separation:
    • A "run" task/goal, which starts the container and waits until the user decides to stop it.
    • A "start" task/goal, which starts the container and hands over to the next task/goal (run integration tests, for example).
    • With version 1.1.1, CARGO also implements that behaviour.
    • Of course the wait parameter remains available AND will remain so until CARGO version 1.3.0 at least.
  • The various installers (introduced with CARGO 1.1.0) now have homogeneous parameters and default values.
  • Fixes and improvements on various containers:
    • The JBoss remote deployer now supports a wider range of configurations.
    • Jetty 7.x and Tomcat 7.x remote deployers are now better documented to avoid some mistakes.
    • Various improvements on the JOnAS containers:
      • Added datasource support on JOnAS 4.x and 5.x.
      • Added extra classpath support on JOnAS 5.x.
      • Added undeploy and redeploy capabilities to the JOnAS 5.x local deployer.
    • The webapp directory of Tomcat containers is now configurable.

And, the full changelog:

Fixed bugs:

  • [CARGO-974] - default extraction dir for artifactInstaller is different from zipUrlInstaller
  • [CARGO-978] - Broken link in site (Local Container)
  • [CARGO-983] - cargo-jetty-7-and-onwards-deployer fails perform remote deploy on jetty-hightide (Jetty@Codehaus)
  • [CARGO-984] - Remote redeploy does not work for Tomcat 7
  • [CARGO-992] - Jonas 5.2: "mvn cargo:redeploy" don't work with the local deployer

Improvements and new features:

  • [CARGO-973] - Add support for extractDir to artifactInstaller
  • [CARGO-979] - Allow specifying the profile name when remotely deploying to a JBoss 5.1.X-server
  • [CARGO-981] - Configuring Tomcat webapps Dir
  • [CARGO-985] - Implement cargo:run
  • [CARGO-989] - Implement run task
  • [CARGO-994] - Add datasource support to JOnAS
  • [CARGO-995] - Add extra classpath support to JOnAS 5.x

Other changes:

  • [CARGO-987] - Deprecate cargo:start's -Dwait argument
  • [CARGO-990] - Deprecate the ANT start task's wait argumen


CARGO 1.1.0

Hi CARGO enthusiasts;

It has been more than usual since we did not come up with any new versions, and it is for a good reason: we have been working on CARGO's version 1.1.0. As usual, we have many bug fixes; but most notably we have very interesting new features.

Some of the interesting new features would perhaps be the following:

  • The Maven2/Maven3 ZipUrlInstaller now reuses the proxy settings from Maven (CARGO-517)
  • Container distributions can now be directory installed from a Maven2/Maven3 artifact definition (CARGO-449)
  • ZipUrlInstaller now has different download and extraction directories (CARGO-907), and the default extraction directory for the Maven2/Maven3 plugin is the project's build directory (CARGO-908).
    • This way, all containers can use the default directories of the ZipUrlInstaller (CARGO-895, CARGO-959 and others).
  • The CARGO ANT tasks can now do remote deployment (CARGO-962)
  • Deployable.pingUrl now supports authentication (CARGO-813)
  • All deployment methods now accept a DeployableMonitor parameter (CARGO-414)
  • The steps to follow in order to remotely debug a container is now documented (CARGO-447); you can check for details

As for some of the improvements:

  • Remote deployment on Jetty is now much faster (CARGO-884)
  • Remote deployers can now change the WAR context (CARGO-331)
  • The Container.stop method now waits for the whole server to stop (CARGO-918), which results in more stable tests if containers are started and stopped one after the other.
  • Different timeouts can be defined when starting and stopping a container (CARGO-713)
  • The JBoss remote deployer can now deploy to clusters (CARGO-899)
  • Tomcat contexts' reloadable parameter can now be configured (CARGO-461)
  • TomcatLocalInstalledLocalDeployer.shouldCopyWars() has been made configurable (CARGO-963)
  • Container pages now include a link to the downloadable container used for tests (CARGO-313) as well as a link to the CI
  • The Maven archetypes now use the failsafe plugin (CARGO-883)

And some fixes:

  • CARGO now takes into account the encoding of your configuration and resource files (CARGO-900, CARGO-903 and CARGO-945)
  • The GlassFish container's asadmin wrapper now correctly reports back errors (CARGO-914)
  • The JBoss 4.x remote deployer now works with large files (CARGO-892)
  • The Tomcat 7.x container now supports the latest Tomcat 7.x releases (CARGO-923)
  • cargo:start does not fail with some versions of JBoss deployables when there's no internet connection (CARGO-956)
  • The shared and extra classpath functionalities have been fixed (CARGO-928)
  • Various fixes around Windows-configurations: CARGO-934, CARGO-893 and CARGO-939

And, finally, some major changes that you probably won't notice (but which are one of the reasons why we changed the version number to 1.1.0):

  • CARGO can now be built with Maven3 (CARGO-789), which this also results in the removal of the Maven1 support (CARGO-793).
  • All the code now uses Java 5 APIs and style (CARGO-656), moreover we have enforced the use of generics. We have also added checkstyle to all the code, including tests (CARGO-891).
  • Java API users can now change the JVM launching method they like (CARGO-898), for example Eclipse instead of the default ANT.

... as well as some major changes you should take a note of:

  • The default value for the wait parameter on the ANT and Maven2/Maven3 plugins is now false (CARGO-896)
    • This means you will need to run mvn cargo:start -Dwait=true when you want to run manual tests.
    • This change in fact renders the creation of automated integration tests easier.
  • ZipUrlInstaller now has different download and extraction directories (CARGO-907), which makes the installDir property obsolete: it is replaced by downloadDir and extractDir, the old property set them both but will probably removed in CARGO 1.2.0.
  • TomcatPropertySet.MANAGER_URL has been deprecated in favor of RemotePropertySet.URI (CARGO-964).
  • TomcatLocalInstalledLocalDeployer.shouldCopyWars() is set to true by default (used to be false) (CARGO-963)
  • Deployable.isExpanded() and Deployable.isExpanded*() have been consolidated, obsoleting the Deployable.isExpanded*() methods (CARGO-902).
  • All API methods for copying configuration and resource files that specify no encoding are deprecated (CARGO-900, CARGO-903 and CARGO-945)
  • AbstractCopyingInstalledLocalDeployer.setShouldDeployExpanded*s() and AbstractCopyingInstalledLocalDeployer.setShouldDeployExpanded() have been consolidated, obsoleting the AbstractCopyingInstalledLocalDeployer.setShouldDeployExpanded*() methods.

For a full list, you can always check the release notes: -we have more than 80 changes!

To use this new version:

  • Users of the Java API and/or ANT tasks can download the CARGO uberjar and ANT tasks from the download page:
  • Maven2/Maven3 users simply need to change the plugin's <version> to 1.1.0, and Maven2/Maven3 will download the new version automatically.

Please share your good (and bad) findings on the mailing list.


Hello CARGO lovers

CARGO version 1.0.6 is now ready! As with all previous versions of CARGO, we have new features.

  • CARGO can now deploy to remote GlassFish 3.x servers (see CARGO-828)! That support is based on the brand-new JSR88 Deployer.
  • The abstract JSR88 deployer for CARGO, which closes one of the oldest JIRA tickets: CARGO-146. This will ease a lot the implementation of any JSR88-compliant container for CARGO.

Moreover, this version being a maintenance release, it also ships with the fix for the following issues:

  • (CARGO-581) - A '/' in context path gets converted to %20
  • (CARGO-875) - java.lang.StringIndexOutOfBoundsException: String index out of range: 5 at createJBossFilterChain(
  • (CARGO-877) - Remote deployment on Jetty 7.1.6 using cargo-jetty-7-and-onwards-deployer fails
  • (CARGO-879) - Cannot set JVM arguments in GlassFish
  • (CARGO-880) - cargo-maven2-plugin - blank property value in container systemProperties causes NullPointerException

This version is also expected to be the last 1.0.x version of CARGO. Indeed, we will then be focusing our efforts on CARGO 1.1.0, which will have many changes and drop of dusty parts (such as the Maven1 plugin).


CARGO 1.0.5 now available!

Hello, CARGO enthusiasts!

Just after the 1.0.4 release, I have sent the announcements I had been talking about, and we've had interesting reactions. Having taken the most important ones into account quikcly, we are happy to announce the immediate availability of CARGO 1.0.5. This time, CARGO did not change much and only includes bug fixes. Here is a short summary of the most interesting ones:

  • [CARGO-863] - The maven2 plugin gives as extension ".bundle" to OSGi bundles (instead of .jar)
  • [CARGO-865] - The remote cargo-jetty-deployer does not work with Jetty 7.2.0
  • [CARGO-869] - Issues with the Maven archetypes

With this new version, the CARGO archetypes are compatible with Maven 2.x as well as Maven 3.x. Moreover, on the OSGi side, both GlassFish 3.x and OW2 JOnAS 5.x support bundle deployment.

CARGO users that prefer the Java API and/or the ANT tasks can download this new version via

Those who use the Maven2 plugin simply have to change their plugin version in their POMs -the artifacts are already on the Maven2 central repository.

Enjoy this new release!