<?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.
-->
<document>
    <properties>
        <title>Home</title>
        <author email="dev@commons.apache.org">Commons Documentation Team</author>
    </properties>
    <body>
        <!-- ================================================== -->
        <section name="Commons Release Plugin Release History">

            <table>
                <tr><th>Version</th><th>Release date</th><th>Required Java Version</th><th>Javadoc</th><th>Release notes</th></tr>
                <tr>
                    <td>1.5</td><td>1-25-2019</td><td>8.0</td><td><a href="javadocs/api-1.5/index.html">api-1.5</a></td><td><a href="release-notes/RELEASE-NOTES-1.5.txt">release notes for 1.5</a></td>
                </tr>
                <tr>
                    <td>1.4</td><td>8-24-2018</td><td>8.0</td><td><a href="javadocs/api-1.4/index.html">api-1.4</a></td><td><a href="release-notes/RELEASE-NOTES-1.4.txt">release notes for 1.4</a></td>
                </tr>
                <tr>
                    <td>1.3</td><td>6-15-2018</td><td>8.0</td><td><a href="javadocs/api-1.3/index.html">api-1.3</a></td><td><a href="release-notes/RELEASE-NOTES-1.3.txt">release notes for 1.3</a></td>
                </tr>
                <tr>
                    <td>1.2</td><td>4-2-2018</td><td>7.0</td><td><a href="javadocs/api-1.2/index.html">api-1.2</a></td><td><a href="release-notes/RELEASE-NOTES-1.2.txt">release notes for 1.2</a></td>
                </tr>
                <tr>
                    <td>1.1</td><td>2-28-2018</td><td>7.0</td><td><a href="javadocs/api-1.1/index.html">api-1.1</a></td><td><a href="release-notes/RELEASE-NOTES-1.1.txt">release notes for 1.1</a></td>
                </tr>
                <tr>
                    <td>1.0</td><td>1-10-2018</td><td>7.0</td><td><a href="javadocs/api-1.0/index.html">api-1.0</a></td><td><a href="release-notes/RELEASE-NOTES-1.0.txt">release notes for 1.0</a></td>
                </tr>
            </table>

        </section>
        <!-- ================================================== -->
    </body>
</document>