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

<component-set>
  <components>
    <!--
     | MAVEN PLUGIN
     |-->
    <component>
      <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
      <role-hint>maven-plugin</role-hint>
      <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
      <configuration>
        <type>maven-plugin</type>
        <extension>jar</extension>
        <language>java</language>
        <addedToClasspath>true</addedToClasspath>
      </configuration>
    </component>
    
    <!--
      | Defining the phases with their appropriate plugins
      ! and versions which will be executed during the 'default'
      ! life cycle.
    -->
    <!--
     | MAVEN PLUGIN
     |-->
    <component>
      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
      <role-hint>maven-plugin</role-hint>
      <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
      <configuration>
        <lifecycles>
          <lifecycle>
            <id>default</id>
            <!-- START SNIPPET: maven-plugin-lifecycle -->
            <phases>
              <process-resources>
                org.apache.maven.plugins:maven-resources-plugin:3.1.0:resources
              </process-resources>
              <compile>
                org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile
              </compile>
              <process-classes>
                org.apache.maven.plugins:maven-plugin-plugin:${project.version}:descriptor
              </process-classes>
              <process-test-resources>
                org.apache.maven.plugins:maven-resources-plugin:3.1.0:testResources
              </process-test-resources>
              <test-compile>
                org.apache.maven.plugins:maven-compiler-plugin:3.8.0:testCompile
              </test-compile>
              <test>
                org.apache.maven.plugins:maven-surefire-plugin:2.22.0:test
              </test>
              <package>
                org.apache.maven.plugins:maven-jar-plugin:3.1.0:jar,
                org.apache.maven.plugins:maven-plugin-plugin:${project.version}:addPluginArtifactMetadata
              </package>
              <install>
                org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install
              </install>
              <deploy>
                org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy
              </deploy>
            </phases>
            <!-- END SNIPPET: maven-plugin-lifecycle -->
          </lifecycle>
        </lifecycles>
      </configuration>
    </component>

  </components>
</component-set>
