<?xml version="1.0" encoding="UTF-8"?>
<!--
   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>Overview</title>
        <author email="dev@commons.apache.org">Apache Commons Documentation Team</author>
    </properties>

    <body>

        <section name="Build Plugin">

            <p>
            This is a <a href="https://maven.apache.org/">Maven 2.x/3.x</a>
            <a href="https://ant.apache.org/">Ant</a> Plugin which is
            used by <a href="https://commons.apache.org/">Apache Commons</a> builds. See
            the <a href="development.html">Development</a> page for information to
            help maintain this plugin.
            </p>

        </section>

        <section name="Plugin goals:">
            <p>
            Available Goals:
            <ul>
                <li><a href="all.html">commons-build:all</a> - Generate all pages for the component's latest release (but not sandbox pages.)</li>
                <li><a href="all-sandbox.html">commons-build:all-sandbox</a> - Generate all pages for the sandbox component's latest release.</li>
                <li><a href="download-page.html">commons-build:download-page</a> - Generate a Download page for the component's latest release.</li>
                <li><a href="mail-page.html">commons-build:mail-page</a> - Generate a custom <i>Mailing List</i> page for a component.</li>
                <li><a href="jira-page.html">commons-build:jira-page</a> - Generate a custom <i>JIRA Issue Tracking</i> page for a component.</li>
                <li><a href="sandbox-jira-page.html">commons-build:sandbox-jira-page</a> - Generate a custom <i>JIRA Issue Tracking page</i> for a Sandbox component.</li>
                <li><a href="copy-javadoc-files-build.html">commons-build:copy-javadoc-files</a> - Copy NOTICE and LICENSE files to -javadoc jar.</li>
                <li><a href="readme-md.html">commons-build:readme-md</a> - Generate a README.md file containing information for contributors from GitHub.</li>
                <li><a href="contributing-md.html">commons-build:contributing-md</a> - Generate a CONTRIBUTING.md file containing information on how to contribute for contributors from GitHub.</li>
            </ul>
            </p>
        </section>

        <section name="Trying out the plugin">
            <p>
            Configure the plugin in the <code>&lt;build&gt;</code> section of the <code>pom.xml</code>
<source><![CDATA[
<plugin>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-build-plugin</artifactId>
  <version>1.13</version>
</plugin>
]]></source>
            </p>
            <p>
            Configure any properties required by the goal and try executing.
            </p>
            <source>mvn commons:download-page [-Dcommons.release.version=1.2.3]</source>

            <p>As noted above, you can override POM properties if necessary.</p>

            <p>To use a SNAPSHOT version (for testing etc)</p>
            <source>mvn org.apache.commons:commons-build-plugin:1.14.0-SNAPSHOT:download-page [-Dcommons.release.version=1.2.3]</source>
        </section>
    </body>
</document>
