Releases are now performed using Maven 2 or Maven 3 so you need to have one of these installed (see the building page). This page describes how the release process is handled.


CARGO is made of four main modules (i.e., trunks):

Of these modules/trunks, the pom is released separately from the other three. However, resources, core, and extensions are always released together.

CARGO uses the Codehaus Nexus instances for release, which means that we release in two phases:

  1. The maven-release-plugin will actually release to a staging area, i.e. the generated artifacts are only available on the staging repository
  2. Once the staged version is OK (to confirm by opening a vote on the CARGO developers list, for example), it can be promoted (therefore, deployed to the Codehaus Maven repository and also synced to Maven Central)

As a consequence of this, the release process is as follows:

  1. If the parent (pom) has changed, release the parent first without using the "staging" phase. To do so, log in to the Codehaus Nexus interface directly (without waiting for a vote) and release.
  2. For resources, core and extensions:


In order to release, you will need:

Before you start

Before releasing, make sure what is going to be released is fully functional; in particular check that all containers pass all tests.

Tagging and deploying on to the staging area

  1. Start by erasing your local Maven repository (${user.home}/.m2/repository/, unless you've reconfigured this in your settings.xml). This will ensure that you don't have any artifacts cached locally that can't be found in public repositories.
  2. Check if there have been SVN commits on that artifact since the latest stable release. If there have been, you'll need to release.
  3. First release the parent if required. Promote the staged artifact and wait for it to be synced to Maven Central (typically takes an hour or two).
  4. Then release each of the code trunks resources, core and extensions.
  5. In each code trunk's topmost pom.xml, change the links to the other trunks' versions to ${project.version} (the maven-release-plugin updates this to the actual version during release).

The typical Maven release procedure is to execute these commands for each trunk (i.e. repeat this for each trunk):

  1. A dry-run before doing the actual release to ensure there aren't any problems:
    mvn clean release:prepare -DdryRun=true
  2. mvn release:prepare: the actual release preparation, with the actual tagging process
  3. mvn release:perform: deploys the tagged artifacts on the Codehaus Nexus staging repository

Release may take up to 6 hours. Make sure you have time before you start (smile)

Sometimes, you might get a message saying Error deploying artifact: Failed to create destination WebDAV collection (directory): unable to find valid certification path to requested target, that's because the Codehaus HTTPS WebDAV servers' certificate is not installed on your computer. In this case:

  1. Download and compile the program from
  2. Execute the program java InstallCert and make it install one of the certificates. If you run the program again, it should be happy and tell you that all certificates are installed.
  3. Add the generated jssecacerts file to your $JAVA_HOME/jre/lib/security directory.

Promoting the staged version

Once the new CARGO version is in the Codehaus Nexus staging repository, send an e-mail to the CARGO list so users can try out the new version. We typically leave the vote open for 72 hours.

Once the developers/users also validate the version as being stable, we need to do the actual release:

  1. Follow the guide on closing a staging repository on Codehaus Nexus and releasing a closed staging repository on Codehaus Nexusin order to release the CARGO artifacts to Maven Central.
  2. Log onto Cargo JIRA, release the current version and add the next version.
  3. Check that the Cargo wiki is up to date. Specifically, perform the following updates:
    1. Modify the status on the home page about the delivery:
    2. Modify the Home page to update the available version number and release date
    3. Modify the Maven2 Plugin Installation page to have the latest SNAPSHOT version in there
    4. Create a blog post
    5. Export the wiki to a zipped HTML file (select all pages except for the Downloads (including all subsections) page) and add it the Downloads page
    6. Move the old version to the Archived Downloads page
      • Remember to move the old documentation archive from the Downloads page to that page as well
    7. Modify the Downloads page to update the download links, available version number, documentation and release note links
  4. Send an announcement email to Cargo mailing lists ... and to other relevent sites you know about. Mailing lists of some servers can also be interesting.

To insert content using Wiki Markup:

  1. Edit the document in the Codehaus Confluence
  2. Clear the existing content by selecting all content and pressing delete on your keyboard
  3. On the toolbar, click Insert -> Wiki markup:
  4. Paste the wiki markup content