<?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>Generating All Pages</title>
        <author email="dev@commons.apache.org">Apache Commons Documentation Team</author>
    </properties>

    <body>


        <section name="commons:all" href="all">

            <subsection name="Overview">
                <p>
                The <code>commons:all</code> goal generates all pages for a <strong>Proper</strong> component
                (for  <strong>Sandbox</strong> components use the <a href="all-sandbox.html">commons:all-sandbox</a> goal).
                Execute the goal using the following command: <source>mvn commons:all</source>
                </p>
                <p>
                This goal uses the following:
                <ul>
                    <li>The goal is mapped to the ant script/target using the <code>all</code> Mojo defintion in the 
                        <a href="http://svn.apache.org/repos/asf/commons/proper/commons-build-plugin/trunk/src/main/scripts/generate-xdocs.mojos.xml">generate-xdocs.mojos.xml</a> mapping document</li>
                    <li>Executes the <code>all</code> target in
                        <a href="http://svn.apache.org/repos/asf/commons/proper/commons-build-plugin/trunk/src/main/scripts/generate-xdocs.build.xml">generate-xdocs.build.xml</a>
                        ant script</li>
                </ul>
                </p>
            </subsection>

            <subsection name="Configuration">
                <p>
                To generate all pages, the union of other goal's properties are configured in the component's <code>pom.xml</code>
                </p>
            </subsection>

        </section>

    </body>
</document>
