This document covers the common release procedures used by the Maven team to perform releases.
Be sure that:
If you started here, you may first want to review one of the following documents that cover the specifics of various types of releases we have in the Maven Project:
If the item you are planning to release is not using the most recent version of its parent (see parent POMs index), consider taking this opportunity to update to it.
Particularly if you update the parent (but sometimes under other circumstances), the site compilation process may fail, or reveal a conspicuous error, or deploy to the wrong location. It is stressful and time-consuming to discover this *after* you stage a release and then try to follow the procedure to deploy the site for review. So you may find it more pleasant to check out the state of the site before you start.
Notice: site publication should be done with Maven 2.2.1 and not Maven 3 because of incompatibilities with maven-project-info-reports-plugin (see MPIR-244 and MPIR-237).
If your project uses Maven to generate documentation and it is not included as part of the release process, stage it now for inclusion in the release vote. For Maven projects, refer to the specific instructions for the project you are releasing.
Propose a vote on the dev list with the closed issues, the issues left, the staging repository and the staging site. For instance:
To: "Maven Developers List" <dev@maven.apache.org> Subject: [VOTE] Release Maven XXX Plugin version Y.Z Hi, We solved N issues: http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=XXX&styleName=Html&version=XXX There are still a couple of issues left in JIRA: http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&pid=XXX&status=1 Staging repo: https://repository.apache.org/content/repositories/maven-[YOUR REPOSITORY ID]/ https://repository.apache.org/content/repositories/maven-[YOUR REPOSITORY ID]/[PATH-TO]-source-release.zip Staging site: http://maven.apache.org/plugins/maven-XXX-plugin-Y.Z/ Guide to testing staged releases: http://maven.apache.org/guides/development/guide-testing-releases.html Vote open for 72 hours. [ ] +1 [ ] +0 [ ] -1
To get the JIRA release notes link, browse to the plugin's JIRA page, select the Road Map link, and use the link to Release Notes that is next to the version being released.
To get the list of issues left in JIRA, browse to the plugin's JIRA page, and from the Preset Filters on the right, use the link for Outstanding issues.
Copied from Votes on Package Releases.
Votes on whether a package is ready to be released follow a format similar to majority approval -- except that the decision is officially determined solely by whether at least three +1 votes were registered. Releases may not be vetoed. Generally the community will table the vote to release if anyone identifies serious problems, but in most cases the ultimate decision, once three or more positive votes have been garnered, lies with the individual serving as release manager. The specifics of the process may vary from project to project, but the 'minimum of three +1 votes' rule is universal.
The list of binding voters is available at http://people.apache.org/committers-by-project.html#maven-pmc (or corresponding group for your project).
Once a vote is successful, post the result to the dev list and cc the PMC. For instance:
To: "Maven Developers List" <dev@maven.apache.org> CC: "Maven Project Management Committee List" <private@maven.apache.org> Subject: [RESULT] [VOTE] Release Maven XXX Plugin version Y.Z Hi, The vote has passed with the following result : +1 (binding): <<list of names>> +1 (non binding): <<list of names>> I will promote the artifacts to the central repo.
If the vote is unsuccessful, the process will need to be restarted. Be sure to drop your staging repository as described in Dropping a Repo.
Once the release is deemed fit for public consumption it can be transfered to a production repository where it will be available to all users.
As above, deploy the web site if appropriate and update the project site for the new release.
In the relevant project, go to Administration, then Versions. Mark the Y.Z version as 'released'. Create version Y.Z+1, if that hasn't already been done. You may also archive any deprecated releases (milestones or alphas) at this time.
The sync into central staging from repository.apache.org occurs every 4 hours. There is a separate hourly schedule that runs which pushes from staging to the other central machines, and then updates the indexes.
Until the svnpubsub work is complete, the deployment of the Maven website will take an hour or so to sync.
If you are releasing a plugin or a shared component you can let Maven Changes Plugin generate and eventually even send the announcement for you. First make sure that you have configured the necessary properties in your committer settings.
cd target/checkout mvn changes:announcement-mail -Papache-release
Even if mail send fails, generated annoucement is available in target/annoucement (see annoucement.vm): you can use it as a base for sending the mail manually.
If your SMTP server requires authentication you need to add the command line options for it:
cd target/checkout mvn changes:announcement-mail -Dchanges.username=<SMTP-USERNAME> -Dchanges.password=<SMTP-PASSWORD> -Papache-release
Note: You must send this email from your apache email account, e.g. YOUR_APACHE_USERNAME@apache.org otherwise the email to announce@maven.apache.org will bounce.
From: YOUR_APACHE_USERNAME@apache.org To: announce@maven.apache.org, users@maven.apache.org Cc: dev@maven.apache.org Subject: [ANN] Maven XXX Plugin Y.Z Released The Maven team is pleased to announce the release of the Maven XXX Plugin, version Y.Z This plugin (insert short description of the plugin's purpose). http://maven.apache.org/plugins/maven-XXX-plugin/ You should specify the version in your project's plugin configuration: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-XXX-plugin</artifactId> <version>Y.Z</version> </plugin> Release Notes - Maven 2.x XXX Plugin - Version Y.Z (Copy Here Release Notes in Text Format from JIRA) Enjoy, -The Maven team
This is a PMC activity. If you are not a PMC member then email the Developer's list with a request to update this file for your release.
Several projects follow this list, and should be made aware of changes to the common parent. This might also be a step to take if other shared resources are released, or if plugin releases are of particular interest to that group.