<?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="http://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>
