<!--
  ~ 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.
  -->

    <!--
  <pluginMetadata>
    <mojos>
      <mojo>
        <goal>myGoal</goal>
        <phase>compile</phase>
        <requiresDependencyResolution>compile</requiresDependencyResolution>
        <requiresProject>true</requiresProject>
        <requiresReports>true</requiresReports>
        <requiresOnline>true</requiresOnline>
        <inheritByDefault>true</inheritByDefault>
        <requiresDirectInvocation>true</requiresDirectInvocation>
        <aggregator>true</aggregator>

        <execute>
          <phase>initialize</phase>
          <lifecycle>mine</lifecycle>
          <goal>goal</goal>
        </execute>

        <components>
          <component>
            <role>stuff</role>
            <hint>more</hint>
          </component>
        </components>

        <parameters>
          <parameter>
            <name>nom</name>
            <property>prop</property>
            <required>true</required>
            <readonly>true</readonly>
            <expression>${my.property}</expression>
            <defaultValue>${project.artifactId}</defaultValue>
            <type>org.apache.maven.project.MavenProject</type>
            <alias>otherProp</alias>
            <description>Test parameter</description>
            <deprecated>Use something else</deprecated>
          </parameter>
        </parameters>
        <description>
          This is a test.
        </description>
        <deprecated>Use another mojo</deprecated>
      </mojo>
    </mojos>
  </pluginMetadata>
    -->
<model xmlns="https://codehaus-plexus.github.io/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://codehaus-plexus.github.io/MODELLO/1.4.0 https://codehaus-plexus.github.io/modello/xsd/modello-1.4.0.xsd"
       xsd.namespace="http://maven.apache.org/PLUGIN-METADATA/${version}"
       xml.schemaLocation="http://maven.apache.org/xsd/plugin-metadata-${version}.xsd">
  <id>plugin-metadata</id>
  <name>PluginMetadata</name>
  <description><![CDATA[
    Plugin descriptor metadata for using with script-based mojos.
  ]]></description>
  <defaults>
    <default>
      <key>package</key>
      <value>org.apache.maven.tools.plugin.extractor.model</value>
    </default>
  </defaults>
  <classes>
    <class rootElement="true" xml.tagName="pluginMetadata">
      <name>PluginMetadata</name>
      <version>1.0.0+</version>
      <description>Root element of a script-based mojo's plugin metadata bindings.</description>
      <fields>
        <field>
          <name>mojos</name>
          <version>1.0.0+</version>
          <required>true</required>
          <description>The list of mojos contained in the accompanying script.</description>
          <association>
            <type>Mojo</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
      </fields>
    </class>
    <class>
      <name>Mojo</name>
      <version>1.0.0+</version>
      <description>Mojo descriptor definition.</description>
      <fields>
        <field>
          <version>1.0.0+</version>
          <name>goal</name>
          <type>String</type>
          <required>true</required>
          <description>The name of the goal used to invoke this mojo.</description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>phase</name>
          <type>String</type>
          <description>The phase to which this mojo should be bound by default.</description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>aggregator</name>
          <type>boolean</type>
          <description>Whether this mojo operates as an aggregator when the reactor is run. That is, only runs once.
          </description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>requiresDependencyResolution</name>
          <type>String</type>
          <description>The scope of dependencies that this mojo requires to have resolved.</description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>requiresProject</name>
          <type>boolean</type>
          <description>Whether this mojo requires a project instance in order to execute.</description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>requiresReports</name>
          <type>boolean</type>
          <description>Whether this mojo requires a reports section in the POM.</description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>requiresOnline</name>
          <type>boolean</type>
          <description>Whether this mojo requires online mode to operate normally.</description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>inheritByDefault</name>
          <type>boolean</type>
          <description>Whether this mojo's configuration should propagate down the POM inheritance chain by default.
          </description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>requiresDirectInvocation</name>
          <type>boolean</type>
          <description>If true, this mojo can only be directly invoked (eg. specified directly on the command line).
          </description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>execution</name>
          <description>Information about a sub-execution of the Maven lifecycle which should be processed.</description>
          <association>
            <type>LifecycleExecution</type>
          </association>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>components</name>
          <description>List of plexus components required by this mojo.</description>
          <association>
            <type>Component</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>parameters</name>
          <description>List of parameters used by this mojo.</description>
          <association>
            <type>Parameter</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <field>
          <name>description</name>
          <version>1.0.0+</version>
          <description>The description for this parameter.</description>
          <type>String</type>
        </field>
        <field xml.tagName="deprecated">
          <name>deprecation</name>
          <version>1.0.0+</version>
          <description>A deprecation message for this mojo parameter.</description>
          <type>String</type>
        </field>
        <field>
          <version>1.1.0+</version>
          <name>since</name>
          <type>String</type>
          <description>Version when the mojo was added to the API.</description>
        </field>
        <field>
          <version>1.0.0+</version>
          <name>call</name>
          <type>String</type>
          <description>The target/method within the script to call when this mojo executes.</description>
        </field>
      </fields>
    </class>
    <class>
      <name>LifecycleExecution</name>
      <version>1.0.0+</version>
      <description><![CDATA[
        A sub-process execution of a lifecycle to satisfy the needs of a mojo.
      ]]></description>
      <fields>
        <field>
          <name>lifecycle</name>
          <version>1.0.0+</version>
          <type>String</type>
          <description>The name of the overlay to apply to the sub-lifecycle before executing it. If specified, this
            lifecycle overlay definition will be bundled with the plugin.
          </description>
        </field>
        <field>
          <name>phase</name>
          <version>1.0.0+</version>
          <description>The phase in the sub-lifecycle.</description>
          <type>String</type>
        </field>
        <field>
          <name>goal</name>
          <version>1.0.0+</version>
          <description>A goal, not attached to a lifecycle phase, which should be executed ahead of this mojo.
          </description>
          <type>String</type>
        </field>
      </fields>
    </class>
    <class>
      <name>Component</name>
      <version>1.0.0+</version>
      <description><![CDATA[
        A reference to a plexus component, assumed to be available to the plugin container.
      ]]></description>
      <fields>
        <field>
          <name>role</name>
          <version>1.0.0+</version>
          <description>The component role to lookup.</description>
          <required>true</required>
          <type>String</type>
        </field>
        <field>
          <name>hint</name>
          <version>1.0.0+</version>
          <type>String</type>
          <description>The role-hint to lookup.</description>
        </field>
      </fields>
    </class>
    <class>
      <name>Parameter</name>
      <version>1.0.0+</version>
      <description><![CDATA[
        A parameter used by a mojo, and configurable from the command line or POM configuration sections.
      ]]></description>
      <fields>
        <field>
          <name>name</name>
          <version>1.0.0+</version>
          <description>The parameter name</description>
          <required>true</required>
          <type>String</type>
        </field>
        <field>
          <name>alias</name>
          <version>1.0.0+</version>
          <type>String</type>
          <description>An alternate name for the parameter.</description>
        </field>
        <field>
          <name>property</name>
          <version>1.0.0+</version>
          <type>String</type>
          <description>The JavaBeans property name to use to configure the mojo with this parameter.</description>
        </field>
        <field>
          <name>required</name>
          <version>1.0.0+</version>
          <type>boolean</type>
          <description>Whether this parameter is required.</description>
        </field>
        <field>
          <name>readonly</name>
          <version>1.0.0+</version>
          <type>boolean</type>
          <description><![CDATA[
            Whether this parameter can be directly edited. If false, this param is either derived from another POM element, or refers to a runtime instance of the build system.
          ]]></description>
        </field>
        <field>
          <name>expression</name>
          <version>1.0.0+</version>
          <type>String</type>
          <description><![CDATA[
            The command-line reference to this parameter.
          ]]></description>
        </field>
        <field>
          <name>defaultValue</name>
          <version>1.0.0+</version>
          <type>String</type>
          <description><![CDATA[
            An expression in the form ${instance.property} for extracting a value for this parameter, especially from
            a runtime instance within the build system. (eg. ${project.build.directory} references
            project.getBuild().getDirectory())
          ]]></description>
        </field>
        <field>
          <name>type</name>
          <version>1.0.0+</version>
          <type>String</type>
          <required>true</required>
          <description><![CDATA[
            The java type for this parameter.
          ]]></description>
        </field>
        <field>
          <name>description</name>
          <version>1.0.0+</version>
          <description>The description for this parameter.</description>
          <type>String</type>
        </field>
        <field xml.tagName="deprecated">
          <name>deprecation</name>
          <version>1.0.0+</version>
          <description>A deprecation message for this mojo parameter.</description>
          <type>String</type>
        </field>
        <field>
          <version>1.1.0+</version>
          <name>since</name>
          <type>String</type>
          <description>Version when the parameter was added.</description>
        </field>
      </fields>
    </class>
  </classes>
</model>
