Deploying Snapshots

There is no need to manually deploy snapshots.
Snapshots are automatically deployed by Hudson build to the Nexus snapshot repository at

Updating Notice files

for i in `/usr/bin/find . -name "NOTICE"`; do sed "s/Copyright (c) 2009-2012 The Apache Software Foundation/Copyright (c) 2009-2013 The Apache Software Foundation/g" $i >/tmp/tmp.notice; cp /tmp/tmp.notice $i; done

Performing a Release

For the most part, we follow the same instructions that the maven team uses.

Basically, setup your settings.xml file as they described.
After that is setup, you need to update the release_notes.txt in the trunk, clean wink from your local repository perform the following steps:

1. Prepare the project for the release

Create a new branch from a trunk - we will run a release process from the branch.
Check-out the branch and edit the top-level pom.xml.



To (change the branch name appropriately):


Currently the wink-itest and wink-assembly modules are not tied to the top-level pom. The pom.xml files under these modules will be missed by the Maven release plugin. We need to change them by hand.

To find the files that need to be hand-edited:

find wink-itests -name 'pom.xml' | xargs grep SNAPSHOT
find wink-itests -name '*.java' | xargs grep SNAPSHOT
find wink-assembly/apache-wink -name 'pom.xml' | xargs grep SNAPSHOT
find wink-assembly/wink-assembly-aggregatejar* -name 'pom.xml' | xargs grep SNAPSHOT

In each of these files, you'll find a tag like this:


If, for example, the target version is 1.1.0-SNAPSHOT, change the tag in each of the places found in your find commands to:


You can also use find and sed together to change the versions:

find wink-itests -name 'pom.xml' -type f -exec sed -i 's/1.1.0-SNAPSHOT/1.1.0/g' {} \;
find wink-itests -name '*.java' -type f -exec sed -i 's/1.1.0-SNAPSHOT/1.1.0/g' {} \;
find wink-assembly -name 'pom.xml' -type f -exec sed -i 's/1.1.0-SNAPSHOT/1.1.0/g' {} \;

Also read through and edit appropriate changes to the release_notes.txt and wink-assembly/wink-assembly-aggregatejar/DEPENDENCIES files.

Important: commit these changes to SVN!

From the branch, run the following maven command to prepare the project for the release:

mvn release:prepare

Running mvn release:prepare will executes the following steps

  • Check that there are no uncommitted changes in the sources
  • Check that there are no SNAPSHOT dependencies
  • Change the version in the poms from x-SNAPSHOT to a new version (you will be prompted for the versions to use)
  • Transform the SCM information in the POM to include the final destination of the tag
  • Run the project tests against the modified POMs to confirm everything is in working order
  • Tag the code in the SCM with a version name (this will be prompted for)
  • Bump the version in the POMs to a new value y-SNAPSHOT (these values will also be prompted for)
    • NOTE: since we're running the release from the branch, and you want this branch name to match up with the version in the pom.xml files within the branch, use the same name on this "development version" prompt that you used on the "release version" prompt. We'll update the pom.xml files in trunk by hand after a successful release vote.
  • Commit the modified POMs

You'll have to build some modules by hand to prepare your local repository for the release:perform: (wiki note: why is this needed?)

cd wink-assembly/wink-assembly-aggregatejar
mvn install -PCIBuild

2. Perform the release

Run the following maven command to build and deploy the release:

mvn release:perform -PCIBuild

Note: if you get a "401 Authorization failed: Access denied" message, you probably need to be added to the "wink" group on Apache's LDAP server. Incubator projects require manual authorizations. Brian Fox can help, or visit IRC channel #asfinfra on freenode.

Running mvn release:perform will executes the following steps

  • Checkout from the tag
  • Build the project and deploy all artifacts to Nexus temporary staging repository while gpg signing all artifacts.

3. Close the staging repository

When the build is done staging, you need to login to the Nexus repository and "close" the staging area. See the Maven page for instructions. This is very important. After the staging area is closed, note the URL for the staging area as you will need it for the vote.

4. Call the wink-dev vote

Propose a vote on the dev list. Be sure to provide the staging repository, the staging site, release SCM tag and revision number. For instance:

To:    ">
Subject: [VOTE] Release Wink 1.1 (RC1)

I'm calling a vote to release Wink 1.1 (RC1)

The Maven staging area is at:

The distributions are in:

This release is tagged at:
 (revision 937139)

The vote will be open here for at least 72 hours.

Guide to testing staged releases:

[ ] +1
[ ] +0
[ ] -1

5. Unsuccessful Voting

If the vote is unsuccessful, the process will need to be restarted

  • Rollback changes done to POMs
  • delete tag from SCM manually
  • Login to Nexus, and "Drop" the release from the staging repository

6. Successful wink-dev Voting, Call the general@incubator vote
To:    ">
CC: ">
Subject: [VOTE] Release Wink 1.1 (incubating)

I'm calling a vote to release Wink 1.1 (incubating) per the process indicated here:

The Maven staging area is at:

The distributions are in:

This release is tagged at:
(revision 958096)

The vote will be open here for at least 72 hours. Please indicate your 

[ ] +1 to release Wink 1.1.1 incubating
[ ] +0
[ ] -1 NOT to release Wink 1.1.1 incubating (and why)

7. Successful general@incubator vote

If the vote passes, you'll need to promote that staging repository to the main location. Login to Nexus to do that as well. See Maven team release page for more details.

8. Copying distributions to Apache

Copy the actual distributions (all artifacts located under apache-wink in Nexus repo) to You can

create the directory for the release
'cd' into it
'wget -r -l 1' to retrieve the artifacts (url is an example)
'mv* .'
'rm -rf index.html'

9. Update Wink site
  • Check out Wink site from
  • Update Wink Java-Docs by:
    • Download & extract Java-Docs from distribution archive;, for example
    • Create new directory under /wink/site/trunk/src/site/resources/VERSION and copy extracted Java-Docs
  • Update Wink site Download page with new Wink release artifacts
  • Follow instructions located under /wink/site/trunk/how-to.txt to rebuild the site

10. Update java and pom.xml files in trunk

Once the release is successful, and since we ran the release from a branch, the pom.xml files in trunk still have the old version number. You will want to update the version in all of the pom.xml files throughout the project; for example, from 1.1-incubating-SNAPSHOT to 1.1.2-incubating-SNAPSHOT.

This is easy to do with the Maven release plugin. Run the following from trunk (changing the version as appropriate, of course)

mvn --batch-mode release:update-versions -DdevelopmentVersion=1.1.2-incubating-SNAPSHOT
find wink-itests -name '*.java' -type f -exec sed -i 's/1.1-incubating-SNAPSHOT/1.1-incubating/g' {} \;

Commit your changes to SVN!


A Guide To Release Management During Incubation

  • No labels