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

    <body>


        <section name="commons-build:contributing-md" href="contributing-md">

            <subsection name="Overview">
                <p>
                The <code>commons-build:contributing-md</code> goal generates a CONTRIBUTING.md file for a component.
                Execute the goal using the following command: <source>mvn commons-build:contributing-md</source>
                </p>

                <p>
                <strong>Note:</strong> The CONTRIBUTING.md only needs to be generated once or if the template changes.
                </p>

                <p>
                This goal uses the following:
                <ul>
                    <li>The goal is mapped to the ant script/target using the <code>contributing-md</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>contributing-md</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/contributing-md-template.md">contributing-md-template.md</a>
                        template</li>
                    <li>Uses the <a href="contributing-md-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 CONTRIBUTING.md, the following <a href="contributing-md-mojo.html">properties</a> are configured in the component's <code>pom.xml</code>
                <ul>
                    <li><b>commons.jira.id</b> - JIRA's external (upper case) project id for the component</li>
                </ul>
                </p>
                <p>
                Example configuration for Commons Text:
<source><![CDATA[
    <properties>
        <commons.jira.id>TEXT</commons.jira.id>
    </properties>
]]></source>
                </p>
            </subsection>

        </section>

    </body>
</document>
