<?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.
  -->

<plugin>
  <name></name>
  <description></description>
  <groupId></groupId>
  <artifactId></artifactId>
  <version></version>
  <goalPrefix>test</goalPrefix>
  <isolatedRealm>false</isolatedRealm>
  <inheritedByDefault>true</inheritedByDefault>
  <mojos>
    <mojo>
      <goal>default-values</goal>
      <description>Test default values.</description>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <implementation>source.Default</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <threadSafe>false</threadSafe>
      <parameters>
        <parameter>
          <name>parameter</name>
          <type>java.lang.String[]</type>
          <required>false</required>
          <editable>true</editable>
          <description>A parameter.</description>
        </parameter>
      </parameters>
      <requirements>
        <requirement>
          <role>org.apache.maven.tools.plugin.scanner.MojoScanner</role>
          <field-name>component</field-name>
        </requirement>
      </requirements>
    </mojo>
    <mojo>
      <goal>full-annotations</goal>
      <description>Test defining every javadoc annotation.</description>
      <requiresDependencyResolution>compile+runtime</requiresDependencyResolution>
      <requiresDirectInvocation>true</requiresDirectInvocation>
      <requiresProject>false</requiresProject>
      <requiresReports>true</requiresReports>
      <aggregator>true</aggregator>
      <requiresOnline>true</requiresOnline>
      <inheritedByDefault>false</inheritedByDefault>
      <phase>install</phase>
      <executePhase>site-deploy</executePhase>
      <executeLifecycle>site</executeLifecycle>
      <implementation>source.Full</implementation>
      <language>java</language>
      <configurator>&quot;role-hint&quot;</configurator>
      <instantiationStrategy>singleton</instantiationStrategy>
      <executionStrategy>always</executionStrategy>
      <since>now</since>
      <deprecated>deprecation text test</deprecated>
      <requiresDependencyCollection>test</requiresDependencyCollection>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>file</name>
          <alias>myAlias</alias>
          <type>java.io.File</type>
          <since>tomorrow</since>
          <deprecated>after tomorrow</deprecated>
          <required>true</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>parameter</name>
          <type>java.lang.String[]</type>
          <required>false</required>
          <editable>true</editable>
          <description>A parameter.</description>
        </parameter>
        <parameter>
          <name>property</name>
          <type>java.lang.String</type>
          <required>false</required>
          <editable>true</editable>
          <description></description>
        </parameter>
      </parameters>
      <configuration>
        <file implementation="java.io.File" default-value="${anExpression}">${aSystemProperty}</file>
        <property implementation="java.lang.String">${aSystemProperty}</property>
      </configuration>
      <requirements>
        <requirement>
          <role>role</role>
          <role-hint>hint</role-hint>
          <field-name>component</field-name>
        </requirement>
      </requirements>
    </mojo>
  </mojos>
  <dependencies/>
</plugin>