Fork me on GitHub

Why this plugin

Why not just use the default maven-release-plugin?

We found the built-in maven release plugin was falling short in the types of projects we were working on. Some specific issues:

  • Performing commits during a release leads to a messy commit history and constant merges. Being able to make multiple releases without having to pull from the remote branch is rather liberating.
  • It is too difficult to convince the built-in plugin to run tests only once.
  • All build steps are run transparently. If something goes wrong it is easy to figure out what. This is especially true when running this job on a ci-Server like Jenkins.

Building

I have an aggregator pom which is separate from the parent pom. Do I declare the release plugin in the parent or the aggregator?
You need to declare it in both poms unfortunately. The configuration in the parent pom will be ignored so should be left blank. All configuration should go into the aggregator.

Source control

Does the Git executable need to be installed?

No. The jgit java implementation of Git is used meaning you do not need to have Git installed. This means you are free to use whichever version of Git You like without fear of compatibilty which sometimes happens with the default maven release plugin due to the way it interprets shell output of Git.


Where do the tags get pushed?

This is actually up to You. The scope of this plugin is to prepare the actual deploy step to commit to the local git repo.