                         Apache Commons Release Plugin
                                  Version 1.0
                                 Release Notes

INTRODUCTION
============
This document contains the release notes for the 1.0 version of Apache commons-release-plgin.
The commons-release-plugin is meant to be a mechanism for automating The Apache Commons Project's
release process.

The Apache Commons Release Plugin is a collection of Java based Maven mojos for Apache Commons
Release process. These mojos are intended to be used as a collection of steps to be strung
together for the purpose of removing the manual steps required to produce an Apache Commons Release.


Changes in this version include:

NEW FEATURES
============

o COMMONSSITE-96:   Create commons-release-component project skeleton.
o COMMONSSITE-99:   Prepare Standard Build integrations, travis, jacoco, checkstyle, etc.
o COMMONSSITE-97:   Documentation for commons-release-plugin.


Historical list of changes: http://commons.apache.org/release-plugin/changes-report.html

For complete information on the Apache commons-release-plugin, including instructions on how
to submit bug reports, patches, or suggestions for improvement, see the Apache commons-release-plugin's
website:

http://commons.apache.org/release-plugin/

Have fun!
-Apache Commons Release Plugin team

