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

    <body>


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

            <subsection name="Overview">
                <p>
                The <code>commons-build:sandbox-jira-page</code> goal generates a custom JIRA Issue Tracking page for a <strong>Sandbox</strong> component.
                (for  <strong>Proper</strong> components use the <a href="jira-page.html">commons-build:jira-page</a> goal).
                Execute the goal using the following command: <source>mvn commons-build:sandbox-jira-page</source>
                </p>

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

                <p>
                This goal uses the following:
                <ul>
                    <li>The goal is mapped to the ant script/target using the <code>sandbox-jira-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>sandbox-jira-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/sandbox-issue-tracking-template.xml">sandbox-issue-tracking-template.xml</a>
                        template</li>
                    <li>Uses the <a href="sandbox-jira-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 JIRA page, the following <a href="sandbox-jira-page-mojo.html">properties</a>  are configured in the component's <code>pom.xml</code>
                <ul>
                    <li><b>commons.jira.componentid</b> - JIRA's internal (numeric) id for the component</li>
                </ul>
                </p>
                <p>
                Example configuration:
<source><![CDATA[
    <properties>
        <commons.jira.componentid>12311182</commons.jira.componentid>
    </properties>
]]></source>
                </p>
            </subsection>

        </section>

    </body>
</document>
