In order to prepare a release, this steps have to be taken:

1. In settings.xml, these entries must exist:

  <profiles>
    <profile>
      <id>releases</id>
      <properties>
        <gpg.keyname>[KEYNAME (EMAIL)]</gpg.keyname>
        <gpg.passphrase>[GPG PASSPHRASE]</gpg.passphrase>
      </properties>
    </profile>
  </profiles>
  <servers>
    <server>
      <id>sonatype-nexus-snapshots</id>
      <username>[USER IN SONATYPE NEXUS]</username>
      <password>[PASSWORD IN SONATYPE NEXUS]</password>
    </server>
  </servers>

2. Ensure all SCM URLs in pom.xml are pointing to the correct github repos like "git@github.com:[user]/[repo].git"

3. Ensure the "dev" branch is totally merged into "master" and pushed to github, and checkout into "master".

4. Deploy SNAPSHOT artifact to Sonatype NEXUS with "mvn deploy", and check in Nexus web interface.

5. Execute a run of the release:prepare goal: "mvn -Preleases release:prepare"

6. Upload the release: "mvn -Preleases release:perform"

7. Merge "master" into "dev", and push. Checkout into the new version tag and merge it into the -dev branch for
   the current x.x version (or create this branch).

8. Follow instructions for Nexus at: http://nexus.sonatype.org/oss-repository-hosting.html


