<?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="http://maven.apache.org/">Maven 2.x/3.x</a> 
            <a href="http://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.10</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.10-SNAPSHOT:download-page [-Dcommons.release.version=1.2.3]</source>
        </section>
    </body>
</document>
