| ----- |
| Releasing Maven |
| ----- |
| Jason van Zyl |
| ----- |
| 2010-07-27 |
| ----- |
| |
| ~~ 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. |
| |
| Releasing Maven |
| |
| Maven differs slightly in its release process due to several extra steps. |
| |
| * Producing Release Candidates |
| |
| For non-alpha/beta releases, release candidates are produced before the actual |
| release. |
| |
| To produce a release candidate, follow the first seven steps only from the following |
| procedure: |
| |
| * {{{./maven-project-release-procedure.html} Maven Project Common Release Procedure}} |
| |
| The version used should be the eventual version with -RC1, -RC2, etc. appended. |
| |
| After producing the RC, request that the developers test the release on the list. |
| If a regression is found, a new release candidate is rolled. |
| |
| After a reasonable time without regressions found, a wider audience may be polled |
| if the release manager desires (for example, users@). |
| |
| Once happy with a release candidate, the full release is performed, with the final |
| version in place. |
| |
| * Producing the Release |
| |
| To produce a final release, the same process as for standard projects is followed: |
| |
| * {{{./maven-project-release-procedure.html} Maven Project Common Release Procedure}} |
| |
| Below describes the additional steps that need to be taken at the points where the website are updated |
| in those instructions. |
| |
| ** Updating the Release Notes and web site |
| |
| Checkout {{https://svn.apache.org/repos/asf/maven/site/trunk}}. |
| |
| Note that release notes can be created and checked in, but other changes |
| should not be checked in as it can be deployed 'live' at any time. |
| |
| * For 2.0.x: update the <<<releasedVersions>>>, <<<current20xVersion>>> and <<<current20xReleaseDate>>> properties in <<<pom.xml>>> |
| |
| * For 2.2.x: update the <<<releasedVersions>>>, <<<currentStableVersion>>> and <<<currentStableReleaseDate>>> properties in <<<pom.xml>>> |
| |
| * For 3.x-alpha/beta: update the <<<developmentVersions>>> and <<<currentDevelopmentVersion>>> properties in <<<pom.xml>>> |
| |
| Next, create the release notes: |
| |
| * create docs/$version |
| |
| * populate docs/$version/release-notes.txt from JIRA |
| |
| * create docs/$version/release-notes.apt.vm (see other versions for an example) |
| |
| Only deploy the site once the release is present on the mirrors, and the reference documentation has been deployed to /ref/. |
| |
| ** Staging the latest documentation |
| |
| Once the release is prepared, but before the release vote, the site needs to be staged. |
| |
| [[1]] From the site checkout, stage the site (replacing $USER and $VERSION): |
| |
| +------+ |
| mvn -Preporting site:stage-deploy -DstagingSiteURL=scp://people.apache.org/home/$USER/public_html/staged-sites/maven-$VERSION |
| +------+ |
| |
| <<Note:>> It requires Maven 2.1.0 or higher to successfully deploy to <<<people.apache.org>>> via SSH. Older Maven |
| versions will fail due to <<<com.jcraft.jsch.JSchException: Algorithm negotiation fail>>>. |
| |
| +-----+ |
| http://people.apache.org/~USER/staged-sites/maven-VERSION |
| +-----+ |
| |
| Some developers have {{{http://www.nabble.com/site%3Astage-deploy-asks-for-a-password--tt15582961s177.html} |
| reported problems}} with the <<<site:stage-deploy>>> goal. In that case, you can stage the site locally and |
| upload it manually: |
| |
| +------+ |
| mvn -Preporting site:stage |
| scp -r target/staging/people.apache.org/home/$USER/public_html/staged-sites/maven-$VERSION USER@people.apache.org:/home/$USER/public_html/staged-sites/maven-$VERSION |
| +------+ |
| |
| ** Additional release steps |
| |
| In addition to promoting the repository, the release archives should be copied to |
| the following locations: |
| |
| * people.apache.org:/www/www.apache.org/dist/maven/binaries - apache-maven-$VERSION-bin.tar.gz, apache-maven-$VERSION-bin.tar.bz2, apache-maven-$VERSION-bin.zip, corresponding checksums (md5 and sha1) and signatures (asc) |
| |
| * people.apache.org:/www/www.apache.org/dist/maven/source - apache-maven-$VERSION-src.tar.gz, apache-maven-$VERSION-src.tar.bz2, apache-maven-$VERSION-src.zip, corresponding checksums (md5 and sha1) and signatures (asc) |
| |
| The files may need to be renamed from those given in the repository. |
| |
| ** Deploy the current references |
| |
| The source code references need to be deployed before deploying the web site |
| with the new version. |
| |
| This is described in {{{../website/deploy-maven-current-ref.html} Deploying the Current References}}. |
| |
| ** Deploying the release website |
| |
| Once both of the above have synced to the main site and a suitable number of mirors, |
| proceed to update the web site and produce the announcement. |
| |
| Commit your changes and then deploy the main Maven site checked out earlier. |
| |
| +-----+ |
| mvn -Preporting clean site-deploy |
| +-----+ |
| |
| ** Remove Old Versions |
| |
| Next, any superceded releases should be removed from the above locations (after |
| confirming that they exist in /www/archive.apache.org/dist/maven). |
| |
| ** Proceed with Announcement |
| |
| You can now proceed with the steps outlined after deploying the website on |
| {{{./maven-project-release-procedure.html} Maven Project Common Release Procedure}} |
| |