- Do one-time setup required for releasing.
- Finish up any changes, close Jiras, assign Jiras to proper release(s).
- Update the property in the main pom controlling the ISSUES-FIXED
- NEW ! Update the parent-pom settings for API compatibility: previous version and compat.level
- Update the READMEs and RELEASE-NOTES.
- Announce on the dev list that you're doing a release so others can get any changes in, and also
know not to be committing to trunk while you're in the middle of doing the release.
- Make a new build directory for this release, and svn checkout the trunk (svn "export" instead of checkout
fails at a later commit step by the release plugin). This is so you can
preserve the build for later upload of selected artifacts to the distribution spot.
If instead you are building from an existing checkout, do a svn update to be sure the workspace is up-to-date.
- Purge your local maven repository of artifacts being built by running in the
top level directory you'll be building from:
Note that this will immediately re-resolve the dependencies from the maven repositories
you have configured.
Note: this doesn't seem to work, as the purged items end up being needed by the recursive module build.
So, instead, just go to the .m2 .../uima/ node and consider deleting that directory.
- Do a full build with deploy of the (last) snapshot before release: mvn clean deploy -Papache-release
- If retrying a release candidate, delete the old rc-xxx in svn xxx/tags/
- If retrying a release candidate,
drop as appropriate) any previous repository.apache.org staging repo
More details on next steps are
Release one or more artifacts into the Apache Nexus staging repository.
You can do multiple release:prepare/perform steps, with subsequent steps
depending on the previous artifacts in their "release" version.
- Do next steps in top release artifact (single module, or mult-module top project).
Release one or more artifacts into the staging repo.
- Scan poms to be sure there are no unintentional -SNAPSHOTs.
For multi-module projects, where all the submodules have the same version, use:
mvn release:prepare -DdryRun and diff the resulting poms
to verify nothing unintentional is dropped or updated incorrectly
mvn release:prepare -DdryRun -DautoVersionSubmodules.
mvn release:clean to restore projects
mvn release:prepare [-DautoVersionSubmodules].
Try to accept the default suggestions for names; you might change the SVN tag to include a "-rc1"
suffix indicating a release candidate number.
- Repeat above steps for all things being released in one go (not already in an aggregate).
- login to https://repository.apache.org
using your Apache LDAP credentials, find the staging artifact, and right click - "close" it
after all things that are being included in this release are present.
- If necessary, run mvn release:prepare on the eclipse update site. This will create the svn tag,
and create the needed artifacts in the target/eclipse-update-site. Or, you can create the tag
yourself, and run mvn install -Papache-release.
No need to run release:perform because no artifacts from this are going to Maven central distribution.
Note that the target/eclipse-update-site will have .svn files - don't delete these - they're needed when
you decide to "publish" via comitting these to the release svn.
- Copy any artifacts (together with their signings) to the staging spot. This is typically
in your people.apache.org/~[userid]/public_html directory. For releases which include eclipse-update-site
packagings, this should include any modifications to the composite update site or subsites (see
Be sure to copy artifacts from the build-from tag spot, which should have a path like:
...[top level project]/target/checkout/target. Note this is not from [top level project]/target.
Doing this will guarantee that you're posting the artifacts built from the tag (which could be
different from the release:prepare build in /target if someone snuck in a svn commit at the right moment.)
- Send [VOTE] message to dev list. List the staging repository that testers
will need to add to their
settings.xml files, and the distribution SVN repo link.
- Post RESULT message
- Delete any artifacts from the staging repo that aren't supposed to go to Maven Central (if any).
The uimaj build doesn't put the bin.zip or bin.tar artifacts on the staging repo, but
other builds might need some cleanup.
- Promote the release(s) from the staging repositories
- Add the approved staged artifacts to the release/uima spot. This is
https://dist.apache.org/repos/dist/release/uima/uimaj-2.8.0 (replace the last with the thing being released).
A suggested approach: Make a new dir in the build project, called svnUpload (or whatever), and copy the artifacts (typically the
bin/zip/tar and the source release and all the signature/checksums) into this dir. Then do the svn command:
svn import -m "commit msg, e.g. uimaj-2.8.0 rc5" . https://dist.apache.org/repos/dist/release/uima/xxxxxxxx-n.n.n
Do not add files like POMs which have line-endings, if they have signatures; the files added should
be "binary" style files. (The line endings (if you build on windows) will be changed upon upload to svn,
which will result in bad signatures).
- Eclipse update sites are already svn working copies, so you can commit these.
- update the UIMA website docs/d with any generated docs, in a manner to
minimize SVN space use, if possible.
This includes: PDFs, HTML versions of docbooks plus the index.html; all go on the
website under the uima.apache.org/d/ (non-SVN source) directory. Update the index.html
as needed for the version.
- Copy RELEASE_NOTES and issuesFixed
from the .../target/checkout where
the mvn release:perform was done from to the UIMA web site in doc/d/[project-version].
- Update the downloads page of the web site
- Update Jira version info to reflect the release status and date
- Cleanup the SVN tag for the release candidate, removing any -rcXX, to indicate the release.
- After release appears on maven central, post an appropriate announce letter
- Add a news item for the release
- Add release to next Board report
- Celebrate :-)