I'm using:
- Eclipse 4.2.2 (Juno Service Release 2)
- Maven 3.0.5
- m2e with the following connectors:
  - buildhelper (for build-helper-maven-plugin)
  - Tycho Project Configurator bridges tycho based projects and PDE (for maven-bundle-plugin)
  - mavenarchiver basic support
- IntelliJ 12.1.4 (in replacement to Eclipse)

--------------------------------------------------------------------------------------
To build EasyMock with Maven
--------------------------------------------------------------------------------------
There are three different levels of build.

1. Build without any active profile

It is a basic compilation of the application.

- "mvn install"

2. Full build

This build will check code coverage with Clover (must be 100%) and
validate that the license headers are correctly set.

You need to add a section to your settings.xml in order to make it works

    <profile>
      <id>easymock</id>
      <properties>
        <maven.clover.licenseLocation>${user.home}/clover.license</maven.clover.licenseLocation>
      </properties>
    </profile

To tell clover where to find its license

Then launch with

- "mvn install -PfullBuild"

3. Deploy build

This is the build to launch to deploy to the surefire repository. It assembles the application and add
the gpg checksum. You will usually launch it on top of the full build.

The command line will ask you to give the passphrase for the gpg private key.

- "mvn install -PfullBuild,deployBuild"

4. Continuous integration

A continuous integration is provided by Cloudbees. You will find the following builds:
- https://henri.ci.cloudbees.com/job/easymock-commit/ : Build launch on commit

--------------------------------------------------------------------------------------
To compile EasyMock in Eclipse
--------------------------------------------------------------------------------------
- Install m2e 
- Import the EasyMock Maven parent project to your Eclipse workspace

--------------------------------------------------------------------------------------
To update the versions
--------------------------------------------------------------------------------------
- "mvn versions:set -DnewVersion=X.Y"
- "mvn versions:commit" if everything is ok, "mvn versions:revert" otherwise

--------------------------------------------------------------------------------------
Configure to deploy to the Sonatype maven repository
--------------------------------------------------------------------------------------
- You will first need to add something like this to your settings.xml

  <servers>
    <server>
      <id>sonatype-nexus-snapshots</id>
      <username>sonatypeuser</username>
      <password>sonatypepassword</password>      
    </server>
    <server>
      <id>sonatype-nexus-staging</id>
      <username>sonatypeuser</username>
      <password>sonatypepassword</password>
    </server>      
  </servers>

- Then follow the instructions from the site below to create your key to sign the deployed items

http://www.sonatype.com/people/2010/01/how-to-generate-pgp-signatures-with-maven/

--------------------------------------------------------------------------------------
To bundle EasyMock and deploy
--------------------------------------------------------------------------------------
- "mvn clean deploy -PfullBuild,deployBuild"

- You will need to enter your gp passphrase at some point during the build. You can 
  also add -Dgpg.passphrase=yourpassphrase to your command line

Note: Due to a bug with the Clover plugin, the deployBuild doesn't execute the clover plugin. So
the aggregated report should be done afterwards.

More details on the deployment rules here:
https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide

- Close the deployment at Sonatype Nexus UI (https://oss.sonatype.org/index.html#stagingRepositories)
- Create a project having easymock as a dependency

- Add the staging repository url found in Nexus

  <repositories>
    <repository>
      <id>sonatype-nexus-staging</id>
      <name>Nexus Release Repository</name>
      <url>https://oss.sonatype.org/content/repositories/orgeasymock-213/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories> 
  
- "mvn clean test"

- Perform this checklist
  -- Is EasyMock bundle created?
  -- Are EasyMock binary, source, javadoc, sample and test jar are present?
  -- As Clover site been generated?
  
- Release the repository. It will be synced with Maven Central Repository

--------------------------------------------------------------------------------------
To generate the aggregated clover report
--------------------------------------------------------------------------------------
- After a fullBuild, at the EasyMock parent project level
- Type 'mvn verify clover2:aggregate -PfullBuild'
- Then 'mvn -N clover2:clover'

--------------------------------------------------------------------------------------
To build the maven site (with findbugs, checkstyle, jdepends and JavaNCSS reports)
--------------------------------------------------------------------------------------
- You will to give enough memory to maven with 'set MAVEN_OPTS=-Xmx512m' (or setting it as environment variable)
- Then type 'mvn site'

--------------------------------------------------------------------------------------
To check-in
--------------------------------------------------------------------------------------
- easymock/trunk/svn-config.txt should be used to handle mime types correctly

--------------------------------------------------------------------------------------
To check dependencies and plugins versions
--------------------------------------------------------------------------------------
- mvn versions:display-dependency-updates versions:display-plugin-updates

--------------------------------------------------------------------------------------
To download the sources associated to our dependencies
--------------------------------------------------------------------------------------
- mvn dependency:resolve -Dclassifier=sources

--------------------------------------------------------------------------------------
To update the license
--------------------------------------------------------------------------------------
- mvn validate license:format

--------------------------------------------------------------------------------------
To release to SourceForge
--------------------------------------------------------------------------------------
- Update the Website
  - Update index.html to announce the new version
  - Update Download.html to add the new package
  - Update Documentation.html to add the new documentation pages
  - Copy the javadoc to website/api
  - Copy Documentation.html and Documentation_fr.html from the zip bundle to the website (rename them)
  - Check-in everything
  - Log to the shell (ssh -t USERNAME,easymock@shell.sourceforge.net create) and launch refresh-website.sh

- Upload the bundle
  - Go to the File Manager on the EasyMock SF project 
  - In EasyMock, create a folder named "3.x"
  - Upload the bundle in the newly created directory
  - Show the detailled information and rename it to remove the "-bundle" at the end
  - Upload "ReleaseNotes.txt" containing the release notes
  - Show the detailled information and rename it to readme.txt
  
- DON'T FORGET: Tag in SVN!

--------------------------------------------------------------------------------------
Android
--------------------------------------------------------------------------------------
- Install the Android SDK
- Configure a device (real or simulated)
- Activate the debug mode if it's a real device
- mvn install -Pandroid
