<?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 xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Apache Commons Build Plugin Release Notes</title>
    <author email="dev@commons.apache.org">Apache Commons Developers</author>
  </properties>
  <body>
    <release version="1.14.1" date="YYYY-MM-DD" description="Maintenance release">
      <!-- FIX -->
      <!-- ADD -->
      <!-- UPDATE -->
      <action dev="ggregory" type="update" due-to="Dependabot">Bump org.graalvm.js:js-scriptengine from 24.0.0 to 24.0.1 #248.</action>
      <action dev="ggregory" type="update" due-to="Dependabot">Bump org.graalvm.js:js from 23.0.3 to 23.0.4 #247.</action>
    </release>
    <release version="1.14.0" date="2024-04-12" description="Feature release">
      <!-- FIX -->
      <action dev="sebb" type="fix">maven-plugin-report-plugin replaces maven-plugin-plugin report goal</action>
      <action dev="sebb" type="fix">Fix up errors in GHA badges for Java and CodeQL</action>
      <action dev="sebb" type="fix">Only use graalvm on Java11+; update to 22.3.3 which avoids NoClassDefFoundError messages</action>
      <action dev="sebb" type="fix">Replace mail-archives.apache.org with lists.apache.org</action>
      <action dev="sebb" type="fix">Drop mail archives that no longer exist (markmail, gmane, old.nabble)</action>
      <action dev="sebb" type="fix">Disable moditect as it fails currently</action>
      <!-- ADD -->
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action>
      <!-- UPDATE -->
      <action dev="sebb" type="update" due-to="Dependabot">Bump org.apache.maven.plugins:maven-plugin-plugin from 3.10.2 to 3.11.0</action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">Drop IRC references</action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">Bump commons-parent from 58 to 69 #240.</action>
      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump org.apache.ant:ant-launcher from 1.10.12 to 1.10.14.</action>
      <action dev="sebb" type="update">Disable cyclonedx - not needed</action>
      <action dev="sebb" type="update">Drop outdated, unmaintained table of components in README in favour of link to website.</action>
      <action dev="ggregory" type="update" due-to="Dependabot">Bump org.graalvm.js:js-scriptengine from 23.1.0 to 24.0.0 #236.</action>
      <action dev="ggregory" type="update" due-to="Dependabot">Bump org.graalvm.js:js from 23.0.1 to 23.0.3.</action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">Bump org.apache.maven:maven-core 3.9.4 to 3.9.6.</action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">Bump org.apache.maven:maven-plugin-api 3.9.4 to 3.9.6.</action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">Bump org.apache.maven.plugin-tools:maven-script-ant 3.9.0 to 3.12.0 #241.</action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">Bump org.apache.maven.plugin-tools:maven-plugin-tools-ant from 3.9.0 to 3.12.0 #242.</action>
      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump org.apache.maven.plugins:maven-artifact-plugin from 3.5.0 to 3.5.1 #393.</action>
    </release>
    <release version="1.13" date="2023-06-25" description="Feature release">
      <!-- FIX -->
      <action dev="ggregory" type="fix" due-to="Gary Gregory">
        Fix running on Java 11 and up. Use GraalVM instead of Java 8 Nashorn for JavaScript, which was deprecated in Java 11 and removed in Java 15.
        Unfortunately, you will see this output on the console at the end of a successful build:<![CDATA[

        Exception in thread "Thread-2" java.lang.NoClassDefFoundError: org/graalvm/collections/EconomicMapImpl$3
            at org.graalvm.collections.EconomicMapImpl.iterator(EconomicMapImpl.java:846)
            at com.oracle.truffle.polyglot.PolyglotEngineImpl.collectAliveContexts(PolyglotEngineImpl.java:1261)
            at com.oracle.truffle.polyglot.PolyglotEngineImpl.ensureClosed(PolyglotEngineImpl.java:1158)
            at com.oracle.truffle.polyglot.PolyglotEngineImpl$PolyglotShutDownHook.run(PolyglotEngineImpl.java:1407)
            at java.lang.Thread.run(Thread.java:750)
        Caused by: java.lang.ClassNotFoundException: org.graalvm.collections.EconomicMapImpl$3
            at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
            at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
            at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
            at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
            ... 5 more]]>
      </action>
      <action dev="ggregory" type="fix" due-to="Marc Wrobel">
        Fix minor typos #79.
      </action>
      <action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory">
        [StepSecurity] ci: Harden GitHub Actions #162.
      </action>
      <!-- ADD -->
      <action dev="ggregory" type="add" due-to="Gary Gregory">
        Add property commons.dist.subdir.
      </action>
      <action dev="ggregory" type="add" due-to="Gary Gregory">
        Add github/codeql-action.
      </action>
      <!-- UPDATE -->
      <action dev="ggregory" type="update" due-to="Gary Gregory">
        Bump Ant integration from org.apache.maven:maven-script-ant to org.apache.maven.plugin-tools:maven-script-ant 3.9.0.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
        Bump actions/cache.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
        Bump actions/checkout.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
        Bump actions/setup-java.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot">
        Bump actions/upload-artifact.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot">
        Bump github/codeql-action.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot">
        Bump maven-antrun-plugin from 1.8 to 3.1.0, #18, #71.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
        Bump spotbugs-maven-plugin from 4.1.3 to 4.7.3.0 #56, #58, #66, #73, #75, #77, #82, #93, #106.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
        Bump spotbugs from 4.1.3 to 4.7.3, #24, #26, #57, #63, #72, #80, #98.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">
        Bump maven-plugin-plugin from 3.6.0 to 3.8.2, #33, #52, #61, #104, #127, #138, #154.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">
        Bump maven-plugin-tools-ant from 3.6.0 to 3.9.0, #32, #53, #59, #126, #139, #152.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot">
        Bump versions-maven-plugin from 2.9.0 to 2.15.0 #64, #74, #81, #101. #115, #119. #136.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
        Bump commons-parent from 52 to 61 #67, #86, #110, #120, #153.
      </action>
    </release>
    <release version="1.12" date="2020-10-17" description="Feature release">
      <action dev="sebb" type="update">
        commons-build:mail-page - add links to lists.apache.org.
      </action>
      <action dev="sebb" type="fix" issue="COMMONSSITE-137">
        commons-build:all ignores commons.release.hash settings.
      </action>
      <action dev="ggregory" type="update">
        Enable GitHub build.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
        Update spotbugs-maven-plugin from 4.0.0 to 4.1.3, #7, #12, #15.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot">
        Update actions/checkout from v2.3.1 to v2.3.3 #9, #14, #21.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot">
        Update versions-maven-plugin from 2.7 to 2.8.1 #10.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot">
        Update actions/setup-java from v1.4.0 to v1.4.2 #13.
      </action>
    </release>
    <release version="1.11" date="2019-08-30" description="Feature release">
      <action dev="ggregory" type="update">
        Update versions-maven-plugin 2.5 -> 2.7.
      </action>
      <action dev="ggregory" type="update">
        Update maven-plugin-plugin 3.5.2 -> 3.6.0.
      </action>
      <action dev="ggregory" type="update">
        Update maven-plugin-tools-ant  3.5.2 -> 3.6.0.
      </action>
      <action dev="ggregory" type="update">
        Update commons.release-plugin.version 1.5 -> 1.6.
      </action>
      <action dev="ggregory" type="update">
        Replace http://mail-archives.apache.org with https://mail-archives.apache.org.
      </action>
    </release>
    <release version="1.10" date="2019-02-26" description="Feature release">
      <action dev="ggregory" type="update">
        Use SHA512 signatures as the default in the download page.
      </action>
      <action dev="sebb" type="update">
        Use SHA256 signatures as the default in the download page.
      </action>
    </release>
    <release version="1.9" date="2018-06-16" description="Feature release">
      <action dev="ggregory" type="fix">
        Fix in src/main/resources/commons-xdoc-templates/readme-md-template.md for components that have a major version number in their artifact IDs.
      </action>
      <action dev="ggregory" type="add" issue="COMMONSSITE-109">
        Add a goal for creating all items for pre-release.
      </action>
      <action dev="ggregory" type="add" issue="COMMONSSITE-116">
        Add a goal for creating the NOTICE.txt file.
      </action>
      <action dev="ggregory" type="add">
        Fix README.md generation typo: 'JavaDoc' -> 'Javadoc'.
      </action>
      <action dev="ggregory" type="update">
        Change the Maven goal prefix from "commons" to "commons-build".
      </action>
      <action dev="ggregory" type="update">
        Update platform requirement from Java 7 to Java 8.
      </action>
    </release>
    <release version="1.8" date="2018-04-02" description="Feature release">
      <action dev="sebb" type="update">
        Use sha1 signatures as opposed to md5 signatures in download page.
      </action>
      <action dev="britter" type="add" issue="COMMONSSITE-94">
        Include Javadoc badge in README.md file.
      </action>
      <action dev="sebb" type="fix">
        Add eol-style:native otherwise generated files can cause commit errors
      </action>
    </release>
    <release version="1.7" date="2016-11-18" description="Feature release">
      <action dev="ggregory" type="add" issue="COMMONSSITE-90">
        Include badges in the README.md file.
      </action>
      <action dev="ggregory" type="add" issue="COMMONSSITE-91">
        Build plugin does not pass the JIRA_ID property when generating README.md.
      </action>
    </release>

    <release version="1.6" date="2016-04-24" description="Feature release">
      <action dev="sebb" type="add">
        Added new download-page subdir property: set this (e.g. to '1.2' or 'lang-1.2' etc) to override the default of binaries/source
      </action>
    </release>

    <release version="1.5" date="2015-11-28" description="Feature and fix release">
      <action dev="ecki" type="update" issue="COMMONSSITE-81">
        commons-build-plugin README/CONTRIBUTING.md handle multi-modules
      </action>
      <action dev="ecki" type="update">
        Download Page - Better describes KEYS file (and uses https links).
      </action>
      <action dev="britter" type="add">
        CONTRIBUTING.md/README.md - New Goals to build Markdown formatted intro files for GitHub.
      </action>
    </release>

    <release version="1.4" date="3 March 2012" description="Feature and fix release.">
      <action dev="ggregory" type="fix" issue="COMMONSSITE-66">
        Add support for a "commons.release.3" set of properties to offer a 3rd download option.
      </action>
      <action type="update">
        Mailing List Page - Make it clear that you have to be subscribed to post.
      </action>
      <action type="fix">
        Fix announce mod_mbox link
      </action>
    </release>
  </body>
</document>
