<!--
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>
    <component>
      <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
      <role-hint>coreit-1</role-hint>
      <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
      <configuration>
        <extension>jar</extension>
        <language>java</language>
        <addedToClasspath>true</addedToClasspath>
        <type>coreit-1</type>
        <packaging>coreit-1</packaging>
      </configuration>
    </component>
    
    <component>
      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
      <role-hint>coreit-1</role-hint>
      <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
      <configuration>
        <lifecycles>
          <lifecycle>
            <id>default</id>
            <phases>
              <process-resources>org.apache.maven.plugins:maven-resources-plugin:0.1-stub-SNAPSHOT:resources</process-resources>
              <compile>org.apache.maven.plugins:maven-compiler-plugin:0.1-stub-SNAPSHOT:compile</compile>
              <process-test-resources>org.apache.maven.plugins:maven-resources-plugin:0.1-stub-SNAPSHOT:testResources</process-test-resources>
              <test-compile>org.apache.maven.plugins:maven-compiler-plugin:0.1-stub-SNAPSHOT:testCompile</test-compile>
              <test>org.apache.maven.plugins:maven-surefire-plugin:0.1-stub-SNAPSHOT:test</test>
              <!-- Results of these plugins are used for verification -->
              <package>org.apache.maven.plugins:maven-jar-plugin:2.2:jar</package>
              <install>org.apache.maven.plugins:maven-install-plugin:2.5.2:install</install>
              <deploy>org.apache.maven.plugins:maven-deploy-plugin:0.1-stub-SNAPSHOT:deploy</deploy>
            </phases>
          </lifecycle>
        </lifecycles>
      </configuration>
    </component>
  </components>
</component-set>