<?xml version="1.0"?>
<!--
   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.
-->

<!-- Description: http://maven.apache.org/plugins/maven-changes-plugin/changes.html -->

<document>
  <properties>
    <title>Apache Commons Release Plugin Changes</title>
    <author email="dev@commons.apache.org">Apache Commons Developers</author>
  </properties>

  <body>
    <release version="1.5" date="2019-01-25" description="Version 1.5">
      <action type="fix" dev="chtompki">ReadmeHtmlVelocityDelegate, bcel's artifactId != commons-bcel, but is just bcel</action>
      <action type="update" dev="ggregory">Drop sha-256 and leave sha-512 only</action>
      <action type="update" dev="ggregory">commons.jacoco.version: 0.8.0 -> 0.8.2; java 11 compatibility</action>
      <action issue="COMMONSSITE-123" type="add" dev="mbenson">introduce configuration parameter to perfom distribution checkin using Maven settings server credentials</action>
      <action issue="COMMONSSITE-122" type="fix" dev="mbenson">stage-distributions mojo assumes site directory has basename 'site'</action>
    </release>

    <release version="1.4" date="2018-08-29" description="Version 1.4">
      <action type="update" dev="ggregory">Better error message when files cannot be checked in to the SCM.</action>
      <action type="fix" dev="ggregory">Check the result of checking out files from the SCM.</action>
      <action issue="COMMONSSITE-120" type="update" dev="ggregory">[release-plugin] Use SHA-256 and SHA-512, not MD5, not SHA-1.</action>
      <action type="update" dev="ggregory">Update Apache Commons Compress from 1.17 to 1.18.</action>
      <action type="update" dev="ggregory">Drop SHA-256 code, leaving only SHA-512.</action>
    </release>

    <release version="1.3" date="2018-06-15" description="Version 1.3">
      <action issue="COMMONSSITE-117" type="update" dev="chtompki">Remove md5 signatures from release artifacts.</action>
      <action issue="COMMONSSITE-113" type="update" dev="chtompki">Put unpacked site in scm dev dist directory for navigating purposes.</action>
      <action issue="COMMONSSITE-112" type="add" dev="ggregory">Add a vote.txt file.</action>
      <action issue="COMMONSSITE-108" type="add" dev="chtompki">Adding README.html and HEADER.html to staged release</action>
      <action type="update" dev="ggregory">Update platform requirement from Java 7 to Java 8.</action>
    </release>

    <release version="1.2" date="2018-04-02" description="Version 1.2">
      <action issue="COMMONSSITE-107" type="fix" dev="chtompki">Adding ./target/commons-release-plugin/scm/RELEASE-NOTES.txt to svn as opposed to ./RELEASE-NOTES.txt</action>
    </release>

    <release version="1.1" date="2018-02-28" description="1.1">
      <action issue="COMMONSSITE-104" type="fix" dev="chtompki">Sha1 signature files now reflect actual signatures.</action>
      <action issue="COMMONSSITE-98"  type="add" dev="chtompki">Making the project more multi-module compatible</action>
      <action issue="COMMONSSITE-102" type="fix" dev="chtompki">Commons Release Plugin doesn't work with Commons Release Plugin</action>
      <action issue="COMMONSSITE-101" type="fix" dev="chtompki">Make -Dcommons.release.dryRun=true our commit toggle</action>
    </release>


    <release version="1.0" date="2018-01-10" description="Initial release">
      <action issue="COMMONSSITE-96" type="add" dev="chtompki">Create commons-release-component project skeleton.</action>
      <action issue="COMMONSSITE-99" type="add" dev="chtompki">Prepare Standard Build integrations, travis, jacoco, checkstyle, etc.</action>
      <action issue="COMMONSSITE-97" type="add" dev="chtompki">Documentation for commons-release-plugin</action>
    </release>
  </body>
</document>
