 ------
 Maven Release
 ------
 Hervé Boutemy
 ------
 2011-06-24
 ------

~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements.  See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership.  The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License.  You may obtain a copy of the License at
~~
~~   http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied.  See the License for the
~~ specific language governing permissions and limitations
~~ under the License.

Maven Release

 Maven Release provides tooling to release a project with Maven, saving a lot of repetitive, manual work.

 It consists of following modules:

*----------------------------------------------------------+----------------+
|| Module                                                  || Description   ||
*----------------------------------------------------------+----------------+
| {{{./maven-release-api/}maven-release-api}}              | APIs to implement to extend maven-release-plugin,
*----------------------------------------------------------+----------------+
| {{{./maven-release-manager/}maven-release-manager}}      | core classes,
*----------------------------------------------------------+----------------+
| {{{./maven-release-plugin/}maven-release-plugin}}        | release plugin to use from Maven,
*----------------------------------------------------------+----------------+
| {{{./maven-release-policies/maven-release-oddeven-policy/}maven-release-oddeven-policy}} | a version policy that proposes even version numbers only for releases and odd numbers for development,
*----------------------------------------------------------+----------------+
| {{{./maven-release-policies/maven-release-semver-policy/}maven-release-semver-policy}} | a version policy that enforce SemVer format and upgrades minor element for next development version.
*----------------------------------------------------------+----------------+

Notes for Developers

  There are tests in this project which require you to set the M2_HOME
  environment variable. Since many of the tests print error messages,
  it is easy to forget about this and then be puzzled.
