| ----- |
| Releasing A Maven Project |
| ----- |
| Jason van Zyl |
| ----- |
| 2010-07-26 |
| ----- |
| |
| ~~ Licensed to the Apache Software Foundation (ASF) under one |
| ~~ or more contributor license agreements. See the NOTICE file |
| ~~ distributed with this work for additional information |
| ~~ regarding copyright ownership. The ASF licenses this file |
| ~~ to you under the Apache License, Version 2.0 (the |
| ~~ "License"); you may not use this file except in compliance |
| ~~ with the License. You may obtain a copy of the License at |
| ~~ |
| ~~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~~ |
| ~~ Unless required by applicable law or agreed to in writing, |
| ~~ software distributed under the License is distributed on an |
| ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ~~ KIND, either express or implied. See the License for the |
| ~~ specific language governing permissions and limitations |
| ~~ under the License. |
| |
| Performing a Maven Project Release |
| |
| This document covers the common release procedures used by the Maven team to perform releases. |
| |
| * {Prerequisites} |
| |
| Be sure that: |
| |
| * you have a Subversion 1.5+ client installed and on your shell's path. See {{{http://subversion.tigris.org/}http://subversion.tigris.org/}}. |
| |
| * you have JDK 5 installed and on your shell's path. |
| |
| * if you receive an OutOfMemoryError during the build, make sure to have set the environment variable MAVEN_OPTS=-Xmx512m |
| |
| * you must use Maven 2.2.1+, as Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively. |
| |
| * follow the environment configuration steps outlined at: {{{http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env}Publishing Maven Artifacts}}. |
| |
| [] |
| |
| * Before you begin |
| |
| 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: |
| |
| * {{{./maven-plugin-release.html} Releasing a Maven plugin project}} |
| |
| * {{{./maven-shared-release.html} Releasing a Maven shared component or subproject}} |
| |
| * {{{./maven-core-release.html} Releasing Maven Core}} |
| |
| * Stage the Release |
| |
| [[1]] Follow the release preparation, staging and closing the repository steps outlined in {{{http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven}Staging a Maven release}}. |
| |
| [[2]] Stage the latest documentation |
| |
| 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. |
| |
| * Call the vote |
| |
| 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]/ |
| |
| 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. |
| |
| * Check the vote results |
| |
| Copied from {{{http://www.apache.org/foundation/voting.html}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 {{{http://www.apache.org/dev/publishing-maven-artifacts.html#drop}Dropping a Repo}}. |
| |
| * Promote the release |
| |
| 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. |
| |
| [[1]]See {{{http://www.apache.org/dev/publishing-maven-artifacts.html#promote}Promoting a Repo}} for details on promotion. |
| |
| [[2]] Deploy the current website |
| |
| As above, deploy the web site if appropriate and update the project site for the |
| new release. |
| |
| [[3]] Update JIRA |
| |
| Go to Admin section in JIRA for the project and 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. |
| |
| [[4]] Create an announcement. For instance, for Maven: |
| |
| <<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 |
| |
| +-----+ |
| |
| [[5]] Add the release to the next board report, in the private subversion area. |
| |
| 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. |
| |
| [[6]] Celebrate :o) |
| |
| |
| |