<?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.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>