<?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>commons-build:readme-md</title>
  </properties>
  <body>
    <section name="commons-build:readme-md">
      <p><strong>Full name</strong>:</p>
      <p>org.apache.commons:commons-build-plugin:1.10:readme-md</p>
      <p><strong>Description</strong>:</p>
      <div>Apache Commons Build Mojo: Generate README.md</div>
      <p><strong>Attributes</strong>:</p>
      <ul>
        <li>Requires a Maven 2.0 project to be executed.</li>
        <li>Is NOT inherited by default in multi-project builds.</li>
      </ul>
      <subsection name="Required Parameters">
        <table border="0" align="left">
          <tr>
            <th>Name</th>
            <th>Type</th>
            <th>Since</th>
            <th>Description</th>
          </tr>
          <tr>
            <td><strong><a href="#commons.release.version">commons.release.version</a></strong></td>
            <td><code>String</code></td>
            <td><code>-</code></td>
            <td>The version of the latest release of the project.<br/><strong>Default value is</strong>: <code>${commons.release.version}</code>.</td>
          </tr>
          <tr>
            <td><strong><a href="#commons.componentid">commons.componentid</a></strong></td>
            <td><code>String</code></td>
            <td><code>-</code></td>
            <td>Commons component id.<br/><strong>Default value is</strong>: <code>${commons.componentid}</code>.</td>
          </tr>
          <tr>
            <td><strong><a href="#basedir">basedir</a></strong></td>
            <td><code>File</code></td>
            <td><code>-</code></td>
            <td>The base directory from which to execute the Ant script.<br/><strong>Default value is</strong>: <code>${basedir}</code>.</td>
          </tr>
        </table>
      </subsection>
      <subsection name="Optional Parameters">
        <table border="0" align="left">
          <tr>
            <th>Name</th>
            <th>Type</th>
            <th>Since</th>
            <th>Description</th>
          </tr>
          <tr>
            <td><strong><a href="#messageLevel">messageLevel</a></strong></td>
            <td><code>String</code></td>
            <td><code>-</code></td>
            <td>The message-level used to tune the verbosity of Ant logging.<br/><strong>Default value is</strong>: <code>info</code>.</td>
          </tr>
        </table>
      </subsection>
      <subsection name="Parameter Details">
        <p><strong><a name="commons.release.version">commons.release.version</a>:</strong></p>
        <div>The version of the latest release of the project.</div>
        <ul>
          <li><strong>Type</strong>: <code>java.lang.String</code></li>
          <li><strong>Required</strong>: <code>Yes</code></li>
          <li><strong>Default</strong>: <code>${commons.release.version}</code></li>
        </ul><hr/><p><strong><a name="commons.componentid">commons.componentid</a>:</strong></p>
        <div>The Commons componentid.</div>
        <ul>
          <li><strong>Type</strong>: <code>java.lang.String</code></li>
          <li><strong>Required</strong>: <code>Yes</code></li>
          <li><strong>Default</strong>: <code>${commons.componentid}</code></li>
        </ul><hr/><p><strong><a name="basedir">basedir</a>:</strong></p>
        <div>The base directory from which to execute the Ant script.</div>
        <ul>
          <li><strong>Type</strong>: <code>java.io.File</code></li>
          <li><strong>Required</strong>: <code>Yes</code></li>
          <li><strong>Expression</strong>: <code>${antBasedir}</code></li>
          <li><strong>Default</strong>: <code>${basedir}</code></li>
        </ul><hr/><p><strong><a name="messageLevel">messageLevel</a>:</strong></p>
        <div>The message-level used to tune the verbosity of Ant logging.</div>
        <ul>
          <li><strong>Type</strong>: <code>java.lang.String</code></li>
          <li><strong>Required</strong>: <code>No</code></li>
          <li><strong>Expression</strong>: <code>${antMessageLevel}</code></li>
          <li><strong>Default</strong>: <code>info</code></li>
        </ul>
      </subsection>
    </section>
  </body>
</document>
