Notes on building/releasing Commons Parent
==========================================

These recipes should work.
Other recipes may suit other tastes!
This is the short form of "Releasing Commons Components"
https://commons.apache.org/releases/index.html

To perform the license release audit, a.k.a. "RAT check", run.

mvn apache-rat:check

Building for local repo:
-----------------------

mvn -N install

Snapshot deployment:
-------------------

mvn deploy

Preparing for release candidate:
-------------------------------
- Check for updates to plugins and dependencies.
- Ensure NOTICE has correct year.
- Ensure changes.xml is up to date; generate RELEASE-NOTES using non-SNAPSHOT version:
  mvn changes:announcement-generate -Prelease-notes -Dchanges.version=nn
- Ensure pom.xml header comment agrees with changes for this release
- Regenerate CONTRIBUTING.md:
  mvn commons:contributing-md
- Regenerate README.md:
  mvn commons:readme-md
- Commit all changes to SVN

Creating release candidate tag:
------------------------------
- Checkout trunk in clean workspace:
  svn co https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk commons-parent-<NN>-RC1
- cd commons-parent-<NN>-RC1
- Edit version in pom.xml to remove SNAPSHOT suffix
- Edit three SCM URLs to point to the future (non-RC) tag:
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-<NN></connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-<NN></developerConnection>
    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-<NN></url>
- Create tag in SVN from the updated workspace:
  svn cp . https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-<NN>-RC1 -m"Create <NN> RC1 tag"
  (this ensures the trunk never sees the different URLs or released version)

Test build of tag:
-----------------
- mvn deploy -Duser.name=ASF-login-name -Prelease -Ptest-deploy
- Check the contents of target/deploy/org/apache/commons/commons-parent/<NN>
  - should contain commons-parent-<NN>.pom, commons-parent-<NN>-site.xml and sigs/hashes
  - also -src.tar.gz, -src.zip and sigs/hashes

Deploy RC to Nexus:
------------------
- Set up passwords in settings.xml (https://wiki.apache.org/commons/UsingNexus)
- Same command as above, but omitting -Ptest-deploy profile:
- mvn package deploy -Dassembly.attach=false -Duser.name=ASF-login-name -Prelease

Tidy and close Nexus staging area:
---------------------------------
- Login to Nexus: https://repository.apache.org/index.html
- Open "Staging Repositories", find the correct "Open" entry (check Summary tab in bottom panel)
- The message "No CLM data recorded" appears to be benign
- Open the bottom "Content" tab and navigate to the files
- Delete *.asc.md5 and *.asc.sha1 if present
- Checkout https://dist.apache.org/repos/dist/dev/commons/commons-parent
- Download the -src archives, their sigs and hashes, then delete them from Nexus.
- Commit the dist/dev/ folder

Close the staging area - Description: "Apache Commons Parent <NN> RC1"
Screen does not auto-refresh - you need to press refresh

Send round the release vote(lazy)
--------------------------------

Promote the Nexus staging area
------------------------------
Assuming the vote passes, login to Nexus and use the "Release" function
[If there was a problem identified, Drop the repo instead and start again]

Copy the RC Tag to final tag:
  URL=https://svn.apache.org/repos/asf/commons/proper/commons-parent/
  svn cp "$URL/tags/commons-parent-37-RC1" "$URL/tags/commons-parent-37" -m "Release commons-parent 37 based on RC1"

Publish the source files to 
https://dist.apache.org/repos/dist/release/commons/commons-parent

Update site documentation
-------------------------
Please check that the site documentation is up to date 
See:
https://svn.apache.org/repos/asf/commons/cms-site/trunk/content/xdoc/commons-parent-pom.xml
This will need updating if any new features / profiles etc are added.
It does not list plugin or dependency versions.
However at the least please update the version details and URL at the start of the page.


Prepare next Release Cycle
--------------------------
Modify pom.xml with next SNAPSHOT version, remove second last history comment
Add next release tag in src/changes/changes.xml and commit changes to trunk
