Releases are now performed using Maven 2 so you need to have Maven 2 installed (see the building page).
- There four several artifacts which have separate release cycles (in this order): pom, resources, core, extensions.
- In each artifact:
- Check if there have been SVN commits on that artifact since the latest stable release. If there have been, you'll need to release.
- The parent and resources typically don't change between versions.
- In the artifact's topmost pom.xml, if there are links to other modules (
core/pom.xmlcontains a property calledcargo.resources.version, for example), update these to the latest release - Release the artifact
- In the artifact's topmost pom.xml, change the links to the other modules' versions to the latest SNAPSHOT back again
- Check if there have been SVN commits on that artifact since the latest stable release. If there have been, you'll need to release.
- Before releasing, make sure what is going to be released is fully functional. In particular, run the core/samples using the all-downloadable profile (
mvn clean install -Pall-downloadable).- The Continous Integration for CARGO actually passes tests for all containers. Green ones are doing well

- If any container is not passing, move it to the all-unstable-downloadable list.
- Make sure all containers in the all-stable-downloadable profile pass the samples.
- The Continous Integration for CARGO actually passes tests for all containers. Green ones are doing well
- Releases are done with the maven release plugin.
- You can supply your credentials on the command line (
-Dusername=<username> -Dpassword=<password>), or keep them in yoursettings.xmlfile (in your.m2directory or in your user home directory. Here's an examplesettings.xml: - Please do a dry-run before doing the actual release to ensure there aren't any problems.
- The typical Maven release procedure is to execute these four commands:
mvn clean install: to make sure the current artifact builds correctly (including tests)mvn clean release:prepare -DautoVersionSubmodules=true -DdryRun=true -DpreparationGoals="clean install": the dry run, to check if everything is OKmvn clean release:prepare -DautoVersionSubmodules=true -DpreparationGoals="clean install": the actual release preparation, with the actual tagging process- If the Subversion commit fails, try executing the same command but add
-Dusername=your_user_name -Dpassword=your_password(of course, replace with your own user name and password on the CARGO SCM)
- If the Subversion commit fails, try executing the same command but add
mvn clean release:perform -DpreparationGoals="clean install": deploys the tagged artifacts on the Codehaus repository (itself mirrored by the Maven central repository, with a delay of 24 to 48 hours)
- You can supply your credentials on the command line (
- Log onto Cargo JIRA, release the current version and add the next version
- Check that the Cargo wiki is up to date. Specifically, perform the following updates:
- Modify the status on the home page about the delivery:
- Make sure the Containers list is complete
- Make sure the Navigation page is complete
- Make sure the Javadocs for the Core Containers are complete
- Make sure the documentation for each container is up to date. The source files (that you need to copy-paste in each container's page manually) are generated in core/documentation/target/[container's name].log.
- Modify the Downloads and Archived Downloads pages to update the download links
- Create a release notes page for the new version
- Export the wiki to a zipped HTML file and add it the Downloads page
- Modify the status on the home page about the delivery:
- Send an announcement email to Cargo mailing lists (and to other relevent sites)
- Create a blog post
Labels