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

    <body>


        <section name="commons-build:mail-page" href="mail-page">

            <subsection name="Overview">
                <p>
                The <code>commons-build:mail-page</code> goal generates a custom Mailing List page for a component
                Execute the goal using the following command: <source>mvn commons-build:mail-page</source>
                </p>

                <p>
                <strong>Note:</strong> The Mailing List page should only need to be generated initially
                for a component or if the Mailing List template changes.
                </p>

                <p>
                This goal uses the following:
                <ul>
                    <li>The goal is mapped to the ant script/target using the <code>mail-page</code> mojo definition in the
                        <a href="https://gitbox.apache.org/repos/asf?p=commons-build-plugin.git;a=tree;f=src/main/scripts/generate-xdocs.mojos.xml">generate-xdocs.mojos.xml</a> mapping document</li>
                    <li>Executes the <code>mail-page</code> target in
                        <a href="https://gitbox.apache.org/repos/asf?p=commons-build-plugin.git;a=tree;f=src/main/scripts/generate-xdocs.build.xml">generate-xdocs.build.xml</a>
                        ant script</li>
                    <li>Uses the <a href="https://gitbox.apache.org/repos/asf?p=commons-build-plugin.git;a=tree;f=src/main/resources/commons-xdoc-templates/mail-lists-template.xml">mail-lists-template.xml</a>
                        template</li>
                    <li>Uses the <a href="mail-page-mojo.html">goal's (i.e. mojo's) parameters</a> to filter values in the template</li>
                </ul>
                </p>
            </subsection>

            <subsection name="Configuration">
                <p>
                To generate a Mailing List page, the following <a href="mail-page-mojo.html">properties</a>  are configured in the component's <code>pom.xml</code>
                <ul>
                    <li><b>commons.componentid</b> - Commons component id</li>
                </ul>
                </p>
                <p>
                Example configuration for Commons Text:
<source><![CDATA[
    <properties>
        <commons.componentid>text</commons.componentid>
    </properties>
]]></source>
                </p>
            </subsection>

        </section>

    </body>
</document>
