Modernize IT plugins to use annotations (#184)

* Modernize IT plugins to use annotations

* Align some tests to maven 3.8.6

# Conflicts:
#	core-it-suite/src/test/resources-filtered/bootstrap.txt
#	core-it-suite/src/test/resources/mng-3221/report/pom.xml
#	core-it-suite/src/test/resources/mng-3428/pom.xml
#	core-it-suite/src/test/resources/mng-3530/build-path/plugin/pom.xml
#	core-it-suite/src/test/resources/mng-3530/pom-property/plugin/pom.xml
#	core-it-suite/src/test/resources/mng-3530/resource-object/plugin/pom.xml
#	core-it-suite/src/test/resources/mng-3704/maven-mng3704-plugin/pom.xml
#	core-it-suite/src/test/resources/mng-3743/plugins/maven-mng3743-check-plugin/pom.xml
#	core-it-suite/src/test/resources/mng-3743/plugins/maven-mng3743-report-plugin/pom.xml
#	core-it-suite/src/test/resources/mng-3743/project/pom.xml
#	core-it-suite/src/test/resources/mng-4086/repo/org/apache/maven/its/mng4086/maven-it-plugin-a/0.1/maven-it-plugin-a-0.1.pom
#	core-it-suite/src/test/resources/mng-4086/repo/org/apache/maven/its/mng4086/maven-it-plugin-a/0.2-SNAPSHOT/maven-it-plugin-a-0.2-20090315.124508-1.pom
#	core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml
#	core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml

* Add dependencies on all support artifacts to ensure multithreaded builds can use correct ordering

* Add missing dependencies on plexus-utils

* Fix for mng-7335 test

* Fix ITs for maven 4

* Rename Component -> TestComponent to leave room for the annotation

* Upgrade a few plugin versions

* Upgrade some JDK requirements to 1.8

* Remove unwanted parentheseses

* Convert the last mojo to annotations

* Force timestamped build

* Fix ITs following Component -> TestComponent rename

* Remove commented block

* Remove versions infered from plugin management

* The implementation parameter is not supported anymore

* Align maven core version

* Fix bad merge
diff --git a/core-it-suite/pom.xml b/core-it-suite/pom.xml
index e3b8be7..ce24fb3 100644
--- a/core-it-suite/pom.xml
+++ b/core-it-suite/pom.xml
@@ -99,13 +99,6 @@
       <!-- NOTE: Use compile scope for transitivity. -->
     </dependency>
     <dependency>
-      <groupId>org.apache.maven.its</groupId>
-      <artifactId>maven-it-helper</artifactId>
-      <version>2.1-SNAPSHOT</version>
-      <!-- TODO: not transitive in tests artifact, so must be left in main
-        scope <scope>test</scope> -->
-    </dependency>
-    <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-verifier</artifactId>
       <!-- TODO: not transitive in tests artifact, so must be left in main
@@ -139,7 +132,348 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-repository-metadata</artifactId>
-      <version>3.6.3</version>
+    </dependency>
+
+    <!-- project dependencies -->
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>maven-it-plugin-bootstrap</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>core-it-component</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>core-it-toolchain</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>core-it-wagon</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>maven-it-helper</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>core-it-extension</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its</groupId>
+      <artifactId>core-it-javaagent</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-clean-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-compiler-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-deploy-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-ear-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-ejb-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-install-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-jar-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-javadoc-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-plugin-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-rar-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-resources-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-site-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-source-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-surefire-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-war-plugin</artifactId>
+      <version>0.1-stub-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-active-collection</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-ant-based</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-artifact</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-class-loader</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-configuration</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-context-passing</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-dependency-collection</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-dependency-resolution</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-expression</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-error</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-extension-consumer</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-extension-provider</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-fork</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-invalid-descriptor</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-log-file</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-model-interpolation</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-no-default-comp</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-no-project</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-online</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-optional-mojos</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-packaging</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-plugin-dependency</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-project</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-project-interpolation</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-setter</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-singleton-component</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-site</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-toolchain</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-touch</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-uses-properties</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-uses-wagon</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-all</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-plexus-utils-11</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-plexus-utils-new</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-plexus-component-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-log4j</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-extension1</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-extension2</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-plexus-lifecycle</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>maven-it-plugin-settings</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>mng-5805-pkg-type-mojo-configuration-extension</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>mng-5805-pkg-type-mojo-configuration-extension2</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>mng-5805-pkg-type-mojo-configuration-plugin</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>mng-5805-pkg-type-mojo-configuration-plugin-dep</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>mng-5958-pkg-type-extension</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.its.plugins</groupId>
+      <artifactId>mng-6759-resolves-project-dependencies-plugin</artifactId>
+      <version>${project.version}</version>
     </dependency>
   </dependencies>
 
@@ -355,7 +689,6 @@
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-dependency-plugin</artifactId>
-            <version>2.10</version>
             <executions>
               <execution>
                 <id>download-maven-distro</id>
@@ -382,7 +715,6 @@
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-antrun-plugin</artifactId>
-            <version>3.0.0</version>
             <executions>
               <execution>
                 <id>unpack-maven-distro</id>
@@ -429,7 +761,6 @@
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-antrun-plugin</artifactId>
-            <version>3.0.0</version>
             <executions>
               <execution>
                 <id>unpack-maven-distro</id>
@@ -471,7 +802,6 @@
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-antrun-plugin</artifactId>
-            <version>3.0.0</version>
             <executions>
               <execution>
                 <id>copy-maven-distro</id>
@@ -495,7 +825,6 @@
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-dependency-plugin</artifactId>
-            <version>2.0</version>
             <executions>
               <execution>
                 <id>inject-emma-into-core-realm</id>
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest.java
index 403a167..a68083d 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest.java
@@ -63,7 +63,7 @@
         verifier.verifyErrorFreeLog();
 
         Properties apiProps = verifier.loadProperties( "target/component.properties" );
-        assertEquals( "true", apiProps.getProperty( "org.apache.maven.plugin.coreit.DefaultComponent" ) );
+        assertEquals( "true", apiProps.getProperty( "org.apache.maven.plugin.coreit.DefaultTestComponent" ) );
     }
 
 }
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2293CustomPluginParamImplTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2293CustomPluginParamImplTest.java
deleted file mode 100644
index 952b639..0000000
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2293CustomPluginParamImplTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.apache.maven.it;
-
-/*
- * 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.
- */
-
-import org.apache.maven.shared.verifier.util.ResourceExtractor;
-import org.apache.maven.shared.verifier.Verifier;
-
-import java.io.File;
-import java.util.Properties;
-
-import org.junit.jupiter.api.Test;
-
-/**
- * This is a test set for <a href="https://issues.apache.org/jira/browse/MNG-2293">MNG-2293</a>.
- *
- *
- */
-public class MavenITmng2293CustomPluginParamImplTest
-    extends AbstractMavenIntegrationTestCase
-{
-
-    public MavenITmng2293CustomPluginParamImplTest()
-    {
-        super( "(2.0.4,)" );
-    }
-
-    /**
-     * Verify that default implementation of an implementation for a complex object works as expected.
-     *
-     * @throws Exception in case of failure
-     */
-    @Test
-    public void testitMNG2293()
-        throws Exception
-    {
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-2293" );
-
-        Verifier verifier = newVerifier( testDir.getAbsolutePath() );
-        verifier.setAutoclean( false );
-        verifier.deleteDirectory( "target" );
-        verifier.addCliArgument( "validate" );
-        verifier.execute();
-        verifier.verifyErrorFreeLog();
-
-        Properties props = verifier.loadProperties( "target/param.properties" );
-        assertEquals( "org.apache.maven.plugin.coreit.sub.AnImplementation-foobar", props.getProperty( "theParameter.string" ) );
-        assertEquals( "org.apache.maven.plugin.coreit.sub.AnImplementation", props.getProperty( "theParameter.class" ) );
-    }
-
-}
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3379ParallelArtifactDownloadsTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3379ParallelArtifactDownloadsTest.java
index a64d0cc..13439e1 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3379ParallelArtifactDownloadsTest.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3379ParallelArtifactDownloadsTest.java
@@ -71,7 +71,7 @@
         assertArtifact( verifier, gid + "a", "x", "0.2-SNAPSHOT", "", "jar",
             "69c041c12f35894230c7c23c49cd245886c6fb6f" );
         assertArtifact( verifier, gid + "a", "x", "0.2-SNAPSHOT", "", "pom",
-            "f0abcb2aa6d99f045c013ecb2671a3a3e71bd715" );
+            "04a8ecb6dc279585b6d17552a4518805f0ff33b9" );
         assertArtifact( verifier, gid + "a", "x", "0.2-SNAPSHOT", "tests", "jar",
             "69c041c12f35894230c7c23c49cd245886c6fb6f" );
         assertArtifact( verifier, gid + "a", "x", "0.2-SNAPSHOT", "sources", "jar",
@@ -84,7 +84,7 @@
         assertArtifact( verifier, gid + "b", "x", "0.2-SNAPSHOT", "", "jar",
             "efb7c4046565774cd7e44645e02f06ecdf91098d" );
         assertArtifact( verifier, gid + "b", "x", "0.2-SNAPSHOT", "", "pom",
-            "a057baebe5cdae3978b530c0bfea8b523b3d4506" );
+            "834b45a91af07702a59855bf99614c099979c065" );
         assertArtifact( verifier, gid + "b", "x", "0.2-SNAPSHOT", "tests", "jar",
             "efb7c4046565774cd7e44645e02f06ecdf91098d" );
         assertArtifact( verifier, gid + "b", "x", "0.2-SNAPSHOT", "sources", "jar",
@@ -99,7 +99,7 @@
         assertArtifact( verifier, gid + "c", "x", "0.2-SNAPSHOT", "", "jar",
             "1eb0d5a421b3074e8a69b0dcca7e325c0636a932" );
         assertArtifact( verifier, gid + "c", "x", "0.2-SNAPSHOT", "", "pom",
-            "9c993bdebc7bd1b673891f203511fed9085996f3" );
+            "f25d7907d7bd9807e823d15f49363de7826204b0" );
         assertArtifact( verifier, gid + "c", "x", "0.2-SNAPSHOT", "tests", "jar",
             "1eb0d5a421b3074e8a69b0dcca7e325c0636a932" );
         assertArtifact( verifier, gid + "c", "x", "0.2-SNAPSHOT", "sources", "jar",
@@ -114,7 +114,7 @@
         assertArtifact( verifier, gid + "d", "x", "0.2-SNAPSHOT", "", "jar",
             "3d606c564625a594165bcbbe4a24c8f11b18b5a0" );
         assertArtifact( verifier, gid + "d", "x", "0.2-SNAPSHOT", "", "pom",
-            "e7b6322cea42970e61316b161f79da690f042f7e" );
+            "4255f7a5781e1be7564a09c86eee140fad042de8" );
         assertArtifact( verifier, gid + "d", "x", "0.2-SNAPSHOT", "tests", "jar",
             "3d606c564625a594165bcbbe4a24c8f11b18b5a0" );
         assertArtifact( verifier, gid + "d", "x", "0.2-SNAPSHOT", "sources", "jar",
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4479ProjectLevelPluginDepUsedForCliConfigTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4479ProjectLevelPluginDepUsedForCliConfigTest.java
deleted file mode 100644
index 774d8f9..0000000
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4479ProjectLevelPluginDepUsedForCliConfigTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.apache.maven.it;
-
-/*
- * 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.
- */
-
-import org.apache.maven.shared.verifier.util.ResourceExtractor;
-import org.apache.maven.shared.verifier.Verifier;
-
-import java.io.File;
-import java.util.Properties;
-
-import org.junit.jupiter.api.Test;
-
-/**
- * This is a test set for <a href="https://issues.apache.org/jira/browse/MNG-4479">MNG-4479</a>.
- *
- * @author Benjamin Bentmann
- */
-public class MavenITmng4479ProjectLevelPluginDepUsedForCliConfigTest
-    extends AbstractMavenIntegrationTestCase
-{
-
-    public MavenITmng4479ProjectLevelPluginDepUsedForCliConfigTest()
-    {
-        super( "[2.0.3,2.0.99),[3.0-alpha-2,)" );
-    }
-
-    /**
-     * Verify that project-level plugin dependencies are used for direct invocations of the plugin and that they
-     * can contribute classes required for the plugin configuration when the plugin is declared using properties
-     * for its key.
-     *
-     * @throws Exception in case of failure
-     */
-    @Test
-    public void testit()
-        throws Exception
-    {
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4479" );
-
-        Verifier verifier = newVerifier( testDir.getAbsolutePath() );
-        verifier.setAutoclean( false );
-        verifier.deleteDirectory( "target" );
-        verifier.deleteArtifacts( "org.apache.maven.its.mng4479" );
-        verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", verifier.newDefaultFilterProperties() );
-        verifier.addCliOption( "-s" );
-        verifier.addCliOption( "settings.xml" );
-        verifier.addCliArgument( "org.apache.maven.its.plugins:maven-it-plugin-parameter-implementation:2.1-SNAPSHOT:param-implementation" );
-        verifier.execute();
-        verifier.verifyErrorFreeLog();
-
-        Properties props = verifier.loadProperties( "target/param.properties" );
-        assertEquals( "org.apache.maven.plugin.coreit.ItImpl-passed", props.getProperty( "theParameter.string" ) );
-        assertEquals( "org.apache.maven.plugin.coreit.ItImpl", props.getProperty( "theParameter.class" ) );
-    }
-
-}
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5669ReadPomsOnce.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5669ReadPomsOnce.java
index f02ff67..67445d1 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5669ReadPomsOnce.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5669ReadPomsOnce.java
@@ -43,6 +43,8 @@
     extends AbstractMavenIntegrationTestCase
 {
 
+    private static final int LOG_SIZE = 233;
+
     public MavenITmng5669ReadPomsOnce()
     {
         super( "[4.0.0-alpha-1,)" );
@@ -57,7 +59,7 @@
         Verifier verifier = newVerifier( testDir.getAbsolutePath(), false );
         Map<String, String> filterProperties =
             Collections.singletonMap( "${javaAgentJar}",
-                                      verifier.getArtifactPath( "mng-coreit", "javaagent", "1.0-SNAPSHOT", "jar" ) );
+                                      verifier.getArtifactPath( "org.apache.maven.its", "core-it-javaagent", "2.1-SNAPSHOT", "jar" ) );
         verifier.filterFile( ".mvn/jvm.config", ".mvn/jvm.config", null, filterProperties );
 
         verifier.setForkJvm( true ); // pick up agent
@@ -78,10 +80,10 @@
                 break;
             }
         }
-        assertEquals( logTxt.toString(), 202, logTxt.size() );
+        assertEquals( logTxt.toString(), LOG_SIZE, logTxt.size() );
 
         // analyze lines. It is a Hashmap, so we can't rely on the order
-        Set<String> uniqueBuildingSources = new HashSet<>( 202 );
+        Set<String> uniqueBuildingSources = new HashSet<>( LOG_SIZE );
         final String buildSourceKey = "org.apache.maven.model.building.source=";
         final int keyLength = buildSourceKey.length();
         for ( String line : logTxt )
@@ -99,7 +101,7 @@
             }
             uniqueBuildingSources.add( line.substring( start + keyLength, end ) );
         }
-        assertEquals( uniqueBuildingSources.size(), 201 /* is 202 minus superpom */ );
+        assertEquals( uniqueBuildingSources.size(), LOG_SIZE - 1 /* minus superpom */ );
     }
 
     @Test
@@ -111,7 +113,7 @@
         Verifier verifier = newVerifier( testDir.getAbsolutePath(), false );
         Map<String, String> filterProperties =
             Collections.singletonMap( "${javaAgentJar}",
-                                      verifier.getArtifactPath( "mng-coreit", "javaagent", "1.0-SNAPSHOT", "jar" ) );
+                                      verifier.getArtifactPath( "org.apache.maven.its", "core-it-javaagent", "2.1-SNAPSHOT", "jar" ) );
         verifier.filterFile( ".mvn/jvm.config", ".mvn/jvm.config", null, filterProperties );
 
         verifier.setLogFileName( "log-bc.txt" );
@@ -133,11 +135,11 @@
                 break;
             }
         }
-        assertEquals( logTxt.toString(), 202 + 4 /* reactor poms are read twice: file + raw (=XMLFilters) */,
+        assertEquals( logTxt.toString(), LOG_SIZE + 4 /* reactor poms are read twice: file + raw (=XMLFilters) */,
                       logTxt.size() );
 
         // analyze lines. It is a Hashmap, so we can't rely on the order
-        Set<String> uniqueBuildingSources = new HashSet<>( 202 );
+        Set<String> uniqueBuildingSources = new HashSet<>( LOG_SIZE );
         final String buildSourceKey = "org.apache.maven.model.building.source=";
         final int keyLength = buildSourceKey.length();
         for ( String line : logTxt )
@@ -155,7 +157,7 @@
             }
             uniqueBuildingSources.add( line.substring( start + keyLength, end ) );
         }
-        assertEquals( uniqueBuildingSources.size(), 201 /* is 202 minus superpom */ );
+        assertEquals( uniqueBuildingSources.size(), LOG_SIZE - 1 /* minus superpom */ );
     }
 
 }
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java b/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java
index 26697d9..b07b23f 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java
@@ -294,7 +294,6 @@
         suite.addTestSuite( MavenITmng4489MirroringOfExtensionRepoTest.class );
         suite.addTestSuite( MavenITmng4488ValidateExternalParenPomLenientTest.class );
         suite.addTestSuite( MavenITmng4482ForcePluginSnapshotUpdateTest.class );
-        suite.addTestSuite( MavenITmng4479ProjectLevelPluginDepUsedForCliConfigTest.class );
         suite.addTestSuite( MavenITmng4474PerLookupWagonInstantiationTest.class );
         suite.addTestSuite( MavenITmng4470AuthenticatedDeploymentToProxyTest.class );
         suite.addTestSuite( MavenITmng4469AuthenticatedDeploymentToCustomRepoTest.class );
@@ -600,7 +599,6 @@
         suite.addTestSuite( MavenITmng2318LocalParentResolutionTest.class );
         suite.addTestSuite( MavenITmng2309ProfileInjectionOrderTest.class );
         suite.addTestSuite( MavenITmng2305MultipleProxiesTest.class );
-        suite.addTestSuite( MavenITmng2293CustomPluginParamImplTest.class );
         suite.addTestSuite( MavenITmng2277AggregatorAndResolutionPluginsTest.class );
         suite.addTestSuite( MavenITmng2276ProfileActivationBySettingsPropertyTest.class );
         suite.addTestSuite( MavenITmng2254PomEncodingTest.class );
diff --git a/core-it-suite/src/test/resources-filtered/bootstrap.txt b/core-it-suite/src/test/resources-filtered/bootstrap.txt
index 47afb6d..d9ccd06 100644
--- a/core-it-suite/src/test/resources-filtered/bootstrap.txt
+++ b/core-it-suite/src/test/resources-filtered/bootstrap.txt
@@ -39,7 +39,6 @@
 org.apache.maven.its.plugins:maven-it-plugin-online:${project.version}
 org.apache.maven.its.plugins:maven-it-plugin-optional-mojos:${project.version}
 org.apache.maven.its.plugins:maven-it-plugin-packaging:${project.version}
-org.apache.maven.its.plugins:maven-it-plugin-parameter-implementation:${project.version}
 org.apache.maven.its.plugins:maven-it-plugin-plexus-component-api:${project.version}
 org.apache.maven.its.plugins:maven-it-plugin-plexus-utils-11:${project.version}
 org.apache.maven.its.plugins:maven-it-plugin-plexus-utils-new:${project.version}
@@ -62,14 +61,14 @@
 org.apache.maven.its:maven-core-it-support:1.0
 org.apache.maven.its:maven-core-it-support:1.3
 org.apache.maven.its:maven-core-it-support:1.4
+org.apache.maven.plugin-tools:maven-plugin-annotations:3.3
 org.apache.maven.plugins:maven-antrun-plugin:3.0.0
-org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5
 org.apache.maven.plugins:maven-assembly-plugin:3.1.0
 org.apache.maven.plugins:maven-clean-plugin:${stubPluginVersion}
 org.apache.maven.plugins:maven-clean-plugin:2.5
 org.apache.maven.plugins:maven-clean-plugin:3.1.0
+org.apache.maven.plugins:maven-clean-plugin:3.2.0
 org.apache.maven.plugins:maven-compiler-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-compiler-plugin:2.0.2
 org.apache.maven.plugins:maven-compiler-plugin:3.1
 org.apache.maven.plugins:maven-compiler-plugin:3.8.1
 org.apache.maven.plugins:maven-compiler-plugin:3.10.1
@@ -79,43 +78,35 @@
 org.apache.maven.plugins:maven-dependency-plugin:3.3.0
 org.apache.maven.plugins:maven-deploy-plugin:${stubPluginVersion}
 org.apache.maven.plugins:maven-deploy-plugin:2.7
-org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1
-org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M2
+org.apache.maven.plugins:maven-deploy-plugin:3.0.0
 org.apache.maven.plugins:maven-ear-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-ear-plugin:2.8
+org.apache.maven.plugins:maven-ear-plugin:3.2.0
 org.apache.maven.plugins:maven-ejb-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-ejb-plugin:2.5.1
+org.apache.maven.plugins:maven-ejb-plugin:3.1.0
 org.apache.maven.plugins:maven-install-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-install-plugin:2.4
-org.apache.maven.plugins:maven-install-plugin:2.5.2
-org.apache.maven.plugins:maven-install-plugin:3.0.0-M1
+org.apache.maven.plugins:maven-install-plugin:3.0.1
 org.apache.maven.plugins:maven-jar-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-jar-plugin:2.2
-org.apache.maven.plugins:maven-jar-plugin:2.4
-org.apache.maven.plugins:maven-jar-plugin:3.2.0
+org.apache.maven.plugins:maven-jar-plugin:3.3.0
 org.apache.maven.plugins:maven-javadoc-plugin:${stubPluginVersion}
 org.apache.maven.plugins:maven-plugin-plugin:${stubPluginVersion}
 org.apache.maven.plugins:maven-plugin-plugin:3.2
 org.apache.maven.plugins:maven-plugin-plugin:3.3
 org.apache.maven.plugins:maven-plugin-plugin:3.6.0
 org.apache.maven.plugins:maven-rar-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-release-plugin:2.5.3
+org.apache.maven.plugins:maven-release-plugin:3.0.0-M5
 org.apache.maven.plugins:maven-resources-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-resources-plugin:2.6
-org.apache.maven.plugins:maven-resources-plugin:2.7
 org.apache.maven.plugins:maven-resources-plugin:3.2.0
 org.apache.maven.plugins:maven-resources-plugin:3.3.0
 org.apache.maven.plugins:maven-site-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-site-plugin:3.2
-org.apache.maven.plugins:maven-site-plugin:3.3
+org.apache.maven.plugins:maven-site-plugin:3.9.1
 org.apache.maven.plugins:maven-source-plugin:${stubPluginVersion}
 org.apache.maven.plugins:maven-surefire-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-surefire-plugin:2.12.4
-org.apache.maven.plugins:maven-surefire-plugin:2.22.0
 org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5
+org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M7
 org.apache.maven.plugins:maven-war-plugin:${stubPluginVersion}
-org.apache.maven.plugins:maven-war-plugin:2.6
+org.apache.maven.plugins:maven-war-plugin:3.3.2
 org.apache.maven.plugins:maven-wrapper-plugin:3.1.0
+org.apache.maven.reporting:maven-reporting-exec:1.1
 org.apache.maven.resolver:maven-resolver-api:1.7.3
 org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3
 org.apache.maven.resolver:maven-resolver-impl:1.7.3
@@ -124,16 +115,11 @@
 org.apache.maven.shared:maven-artifact-transfer:0.11.0
 org.apache.maven.shared:maven-common-artifact-filters:3.1.0
 org.apache.maven.shared:maven-shared-utils:3.3.3
-org.apache.maven.skins:maven-default-skin:1.0
-org.apache.maven.surefire:surefire-junit4:2.12.4
-org.apache.maven.surefire:surefire-junit4:2.22.0
-org.apache.maven.wagon:wagon-webdav-jackrabbit:2.0
+org.apache.maven.skins:maven-default-skin:1.3
+org.apache.maven.surefire:surefire-junit4:3.0.0-M7
 org.apache.maven.wagon:wagon-webdav-jackrabbit:2.10
-org.apache.maven:maven-aether-provider:3.1.1
-org.apache.maven:maven-artifact-manager:2.1.0
-org.apache.maven:maven-core:3.1.0
-org.apache.maven:maven-core:3.3.1
-org.apache.maven:maven-model:2.1.0
+org.apache.maven.wagon:wagon-webdav:1.0-beta-2
+org.apache.maven:maven-core:3.8.6
 org.apache.maven:maven-plugin-api:3.1.0
 org.apache.maven:maven-plugin-api:3.2.5
 org.apache.maven:maven-plugin-registry:2.1.0
@@ -141,10 +127,9 @@
 org.apache.maven:maven-project:2.1.0
 org.apache.maven:maven-repository-metadata:2.1.0
 org.apache.maven:maven-repository-metadata:3.1.1
+org.apache.maven:maven-resolver-provider:3.8.6
 org.apache.maven:maven-script-ant:2.1.0
 org.apache.maven:maven-settings-builder:3.1.1
-org.apache.maven:maven-settings:2.0
-org.apache.maven:maven-settings:2.1.0
 org.apache.maven:maven-settings:3.1.1
 org.codehaus.gmavenplus:gmavenplus-plugin:1.11.0
 org.codehaus.mojo:flatten-maven-plugin:1.0.0
@@ -152,6 +137,7 @@
 org.codehaus.plexus:plexus-component-annotations:1.5.5
 org.codehaus.plexus:plexus-component-metadata:1.5.5
 org.codehaus.plexus:plexus-container-default:1.5.5
+org.codehaus.plexus:plexus-io:1.0
 org.codehaus.plexus:plexus-java:1.0.5
 org.codehaus.plexus:plexus-utils:1.1
 org.codehaus.plexus:plexus-utils:1.4.5
diff --git a/core-it-suite/src/test/resources/mng-0377/repo/org/apache/maven/its/mng0377/maven-it-plugin-prefix/0.1/maven-it-plugin-prefix-0.1.pom b/core-it-suite/src/test/resources/mng-0377/repo/org/apache/maven/its/mng0377/maven-it-plugin-prefix/0.1/maven-it-plugin-prefix-0.1.pom
index d1687ab..2425861 100644
--- a/core-it-suite/src/test/resources/mng-0377/repo/org/apache/maven/its/mng0377/maven-it-plugin-prefix/0.1/maven-it-plugin-prefix-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-0377/repo/org/apache/maven/its/mng0377/maven-it-plugin-prefix/0.1/maven-it-plugin-prefix-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-a/0.1/maven-it-plugin-a-0.1.pom b/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-a/0.1/maven-it-plugin-a-0.1.pom
index c65c678..51032c6 100644
--- a/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-a/0.1/maven-it-plugin-a-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-a/0.1/maven-it-plugin-a-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-a/0.2-SNAPSHOT/maven-it-plugin-a-0.2-20090306.154319-1.pom b/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-a/0.2-SNAPSHOT/maven-it-plugin-a-0.2-20090306.154319-1.pom
index 1f67272..2c1ebcc 100644
--- a/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-a/0.2-SNAPSHOT/maven-it-plugin-a-0.2-20090306.154319-1.pom
+++ b/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-a/0.2-SNAPSHOT/maven-it-plugin-a-0.2-20090306.154319-1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-b/0.1/maven-it-plugin-b-0.1.pom b/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-b/0.1/maven-it-plugin-b-0.1.pom
index 3b6d9db..957efaa 100644
--- a/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-b/0.1/maven-it-plugin-b-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-0449/repo/org/apache/maven/its/mng0449/maven-it-plugin-b/0.1/maven-it-plugin-b-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <!--
diff --git a/core-it-suite/src/test/resources/mng-0479/test-1/repo/org/apache/maven/its/mng0479/maven-mng0479-plugin/0.1-SNAPSHOT/maven-mng0479-plugin-0.1-20100824.154413-1.pom b/core-it-suite/src/test/resources/mng-0479/test-1/repo/org/apache/maven/its/mng0479/maven-mng0479-plugin/0.1-SNAPSHOT/maven-mng0479-plugin-0.1-20100824.154413-1.pom
index 38f6e73..3cf40c5 100644
--- a/core-it-suite/src/test/resources/mng-0479/test-1/repo/org/apache/maven/its/mng0479/maven-mng0479-plugin/0.1-SNAPSHOT/maven-mng0479-plugin-0.1-20100824.154413-1.pom
+++ b/core-it-suite/src/test/resources/mng-0479/test-1/repo/org/apache/maven/its/mng0479/maven-mng0479-plugin/0.1-SNAPSHOT/maven-mng0479-plugin-0.1-20100824.154413-1.pom
@@ -42,7 +42,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-0612/plugin/pom.xml b/core-it-suite/src/test/resources/mng-0612/plugin/pom.xml
index 7f97a3d..fe0c221 100644
--- a/core-it-suite/src/test/resources/mng-0612/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0612/plugin/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-0836/repo-0/org/apache/maven/its/mng836/parent/0.1/parent-0.1.pom b/core-it-suite/src/test/resources/mng-0836/repo-0/org/apache/maven/its/mng836/parent/0.1/parent-0.1.pom
index b17b989..3954eb6 100644
--- a/core-it-suite/src/test/resources/mng-0836/repo-0/org/apache/maven/its/mng836/parent/0.1/parent-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-0836/repo-0/org/apache/maven/its/mng836/parent/0.1/parent-0.1.pom
@@ -43,7 +43,7 @@
       <dependency>
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-plugin-api</artifactId>
-        <version>2.0</version>
+        <version>3.8.6</version>
       </dependency>
     </dependencies>
   </dependencyManagement>
diff --git a/core-it-suite/src/test/resources/mng-0870/plugin/pom.xml b/core-it-suite/src/test/resources/mng-0870/plugin/pom.xml
index 30f1550..08d3618 100644
--- a/core-it-suite/src/test/resources/mng-0870/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-0870/plugin/pom.xml
@@ -47,7 +47,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <!--
diff --git a/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar b/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar
index ccd1259..474ae92 100644
--- a/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar
+++ b/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar
Binary files differ
diff --git a/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar.md5 b/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar.md5
index 5e07705..841aba1 100644
--- a/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar.md5
+++ b/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar.md5
@@ -1 +1 @@
-9a1d5d7341340153a6b44ae5ee5f183e
\ No newline at end of file
+ed17d782a3727e5edf5a8b672d3b235a
diff --git a/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar.sha1 b/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar.sha1
index 5cee8cb..ff8cfdd 100644
--- a/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar.sha1
+++ b/core-it-suite/src/test/resources/mng-0956/repo/org/apache/maven/its/mng0956/component/0.1/component-0.1.jar.sha1
@@ -1 +1 @@
-e1d55c712d06c8e149685a5f71715cdc55e2efbd
\ No newline at end of file
+126f797cdce826d98f1a80617ed491a2a63337b7
diff --git a/core-it-suite/src/test/resources/mng-1088/plugin/pom.xml b/core-it-suite/src/test/resources/mng-1088/plugin/pom.xml
index 1169958..d6f474c 100644
--- a/core-it-suite/src/test/resources/mng-1088/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-1088/plugin/pom.xml
@@ -50,7 +50,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-1088/repo/org/apache/maven/its/mng1088/p/0.1-SNAPSHOT/p-0.1-SNAPSHOT.pom b/core-it-suite/src/test/resources/mng-1088/repo/org/apache/maven/its/mng1088/p/0.1-SNAPSHOT/p-0.1-SNAPSHOT.pom
index dc79c49..79bd121 100644
--- a/core-it-suite/src/test/resources/mng-1088/repo/org/apache/maven/its/mng1088/p/0.1-SNAPSHOT/p-0.1-SNAPSHOT.pom
+++ b/core-it-suite/src/test/resources/mng-1088/repo/org/apache/maven/its/mng1088/p/0.1-SNAPSHOT/p-0.1-SNAPSHOT.pom
@@ -43,7 +43,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-2135/plugin/pom.xml b/core-it-suite/src/test/resources/mng-2135/plugin/pom.xml
index a7f5367..f1c3e47 100644
--- a/core-it-suite/src/test/resources/mng-2135/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2135/plugin/pom.xml
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar b/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar
index e7c945f..2be59cd 100644
--- a/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar
+++ b/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar
Binary files differ
diff --git a/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar.md5 b/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar.md5
index 9d6b109..d4410c7 100644
--- a/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar.md5
+++ b/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar.md5
@@ -1 +1 @@
-bbddd843a4d55c67b34a2fdec1c6d94f
\ No newline at end of file
+ae87252c2c73b22833c5c91e1fbafaa1
diff --git a/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar.sha1 b/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar.sha1
index 46b7dc1..d3819ad 100644
--- a/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar.sha1
+++ b/core-it-suite/src/test/resources/mng-2228/repo/org/apache/maven/its/mng2228/component/0.1/component-0.1.jar.sha1
@@ -1 +1 @@
-c143f32cfa614a461dc638b17d0c8efaf46782e4
\ No newline at end of file
+dbd5509a21484155dfdeb1eb13f59892e129f631
diff --git a/core-it-suite/src/test/resources/mng-2293/pom.xml b/core-it-suite/src/test/resources/mng-2293/pom.xml
deleted file mode 100644
index 92016ad..0000000
--- a/core-it-suite/src/test/resources/mng-2293/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<project>
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>org.apache.maven.its.mng2293</groupId>
-  <artifactId>test</artifactId>
-  <version>3.8.1</version>
-  <packaging>pom</packaging>
-
-  <name>Maven Integration Test :: MNG-2293</name>
-  <description>
-    Verify that default implementation of an implementation for a complex object works as expected.
-  </description>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.its.plugins</groupId>
-        <artifactId>maven-it-plugin-parameter-implementation</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>param-implementation</goal>
-            </goals>
-            <configuration>
-              <outputFile>target/param.properties</outputFile>
-              <theParameter>
-                <field>foobar</field>
-              </theParameter>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/core-it-suite/src/test/resources/mng-2432/repo/org/apache/maven/its/mng2432/pom/it-maven-plugin/0.1/it-maven-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-2432/repo/org/apache/maven/its/mng2432/pom/it-maven-plugin/0.1/it-maven-plugin-0.1.pom
index 68631b3..2a02a11 100644
--- a/core-it-suite/src/test/resources/mng-2432/repo/org/apache/maven/its/mng2432/pom/it-maven-plugin/0.1/it-maven-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-2432/repo/org/apache/maven/its/mng2432/pom/it-maven-plugin/0.1/it-maven-plugin-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-2432/repo/org/apache/maven/its/mng2432/settings/it-maven-plugin/0.1/it-maven-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-2432/repo/org/apache/maven/its/mng2432/settings/it-maven-plugin/0.1/it-maven-plugin-0.1.pom
index 1bc67fe..adffbd3 100644
--- a/core-it-suite/src/test/resources/mng-2432/repo/org/apache/maven/its/mng2432/settings/it-maven-plugin/0.1/it-maven-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-2432/repo/org/apache/maven/its/mng2432/settings/it-maven-plugin/0.1/it-maven-plugin-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-2695/repo/org/apache/maven/its/mng2695/plugin-a/0.1-SNAPSHOT/plugin-a-0.1-SNAPSHOT.pom b/core-it-suite/src/test/resources/mng-2695/repo/org/apache/maven/its/mng2695/plugin-a/0.1-SNAPSHOT/plugin-a-0.1-SNAPSHOT.pom
index e7f142c..9d6c0b1 100644
--- a/core-it-suite/src/test/resources/mng-2695/repo/org/apache/maven/its/mng2695/plugin-a/0.1-SNAPSHOT/plugin-a-0.1-SNAPSHOT.pom
+++ b/core-it-suite/src/test/resources/mng-2695/repo/org/apache/maven/its/mng2695/plugin-a/0.1-SNAPSHOT/plugin-a-0.1-SNAPSHOT.pom
@@ -43,7 +43,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-2695/repo/org/apache/maven/its/mng2695/plugin-b/0.1-SNAPSHOT/plugin-b-0.1-20081021.184238-1.pom b/core-it-suite/src/test/resources/mng-2695/repo/org/apache/maven/its/mng2695/plugin-b/0.1-SNAPSHOT/plugin-b-0.1-20081021.184238-1.pom
index 05be326..203ca2d 100644
--- a/core-it-suite/src/test/resources/mng-2695/repo/org/apache/maven/its/mng2695/plugin-b/0.1-SNAPSHOT/plugin-b-0.1-20081021.184238-1.pom
+++ b/core-it-suite/src/test/resources/mng-2695/repo/org/apache/maven/its/mng2695/plugin-b/0.1-SNAPSHOT/plugin-b-0.1-20081021.184238-1.pom
@@ -43,7 +43,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-2771/plugin/pom.xml b/core-it-suite/src/test/resources/mng-2771/plugin/pom.xml
index cef06ce..9a2c077 100644
--- a/core-it-suite/src/test/resources/mng-2771/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-2771/plugin/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
diff --git a/core-it-suite/src/test/resources/mng-2926/repo/org/apache/maven/its/mng2926/mng-2926/0.1/mng-2926-0.1.pom b/core-it-suite/src/test/resources/mng-2926/repo/org/apache/maven/its/mng2926/mng-2926/0.1/mng-2926-0.1.pom
index 6c82f15..f83d114 100644
--- a/core-it-suite/src/test/resources/mng-2926/repo/org/apache/maven/its/mng2926/mng-2926/0.1/mng-2926-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-2926/repo/org/apache/maven/its/mng2926/mng-2926/0.1/mng-2926-0.1.pom
@@ -46,7 +46,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-2926/repo/org/apache/maven/plugins/mng-2926/0.1/mng-2926-0.1.pom b/core-it-suite/src/test/resources/mng-2926/repo/org/apache/maven/plugins/mng-2926/0.1/mng-2926-0.1.pom
index 7a4dc2c..291ae9c 100644
--- a/core-it-suite/src/test/resources/mng-2926/repo/org/apache/maven/plugins/mng-2926/0.1/mng-2926-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-2926/repo/org/apache/maven/plugins/mng-2926/0.1/mng-2926-0.1.pom
@@ -46,7 +46,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-2926/repo/org/codehaus/mojo/mng-2926/0.1/mng-2926-0.1.pom b/core-it-suite/src/test/resources/mng-2926/repo/org/codehaus/mojo/mng-2926/0.1/mng-2926-0.1.pom
index f273de1..0953222 100644
--- a/core-it-suite/src/test/resources/mng-2926/repo/org/codehaus/mojo/mng-2926/0.1/mng-2926-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-2926/repo/org/codehaus/mojo/mng-2926/0.1/mng-2926-0.1.pom
@@ -46,7 +46,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3099/repo/org/apache/maven/its/mng3099/maven-mng3099-plugin/0.1/maven-mng3099-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-3099/repo/org/apache/maven/its/mng3099/maven-mng3099-plugin/0.1/maven-mng3099-plugin-0.1.pom
index 161724b..714e96e 100644
--- a/core-it-suite/src/test/resources/mng-3099/repo/org/apache/maven/its/mng3099/maven-mng3099-plugin/0.1/maven-mng3099-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-3099/repo/org/apache/maven/its/mng3099/maven-mng3099-plugin/0.1/maven-mng3099-plugin-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3217/repo/org/apache/maven/its/mng3217/maven-it-plugin-touch/0.1/maven-it-plugin-touch-0.1.pom b/core-it-suite/src/test/resources/mng-3217/repo/org/apache/maven/its/mng3217/maven-it-plugin-touch/0.1/maven-it-plugin-touch-0.1.pom
index d579cf4..52ba493 100644
--- a/core-it-suite/src/test/resources/mng-3217/repo/org/apache/maven/its/mng3217/maven-it-plugin-touch/0.1/maven-it-plugin-touch-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-3217/repo/org/apache/maven/its/mng3217/maven-it-plugin-touch/0.1/maven-it-plugin-touch-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3217/repo/org/apache/maven/its/mng3217/maven-it-plugin-touch/0.2/maven-it-plugin-touch-0.2.pom b/core-it-suite/src/test/resources/mng-3217/repo/org/apache/maven/its/mng3217/maven-it-plugin-touch/0.2/maven-it-plugin-touch-0.2.pom
index 46db279..3939ce3 100644
--- a/core-it-suite/src/test/resources/mng-3217/repo/org/apache/maven/its/mng3217/maven-it-plugin-touch/0.2/maven-it-plugin-touch-0.2.pom
+++ b/core-it-suite/src/test/resources/mng-3217/repo/org/apache/maven/its/mng3217/maven-it-plugin-touch/0.2/maven-it-plugin-touch-0.2.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3259/parent/pom.xml b/core-it-suite/src/test/resources/mng-3259/parent/pom.xml
index 5f12e3c..b497e6c 100644
--- a/core-it-suite/src/test/resources/mng-3259/parent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3259/parent/pom.xml
@@ -18,7 +18,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.3</version>
+          <version>3.0.0-M7</version>
           <configuration>
             <forkMode>once</forkMode>
             <workingDirectory>${basedir}</workingDirectory>
diff --git a/core-it-suite/src/test/resources/mng-3284/repo/org/apache/maven/its/mng3284/maven-it-plugin-version/0.1/maven-it-plugin-version-0.1.pom b/core-it-suite/src/test/resources/mng-3284/repo/org/apache/maven/its/mng3284/maven-it-plugin-version/0.1/maven-it-plugin-version-0.1.pom
index ef6c25a..fef2847 100644
--- a/core-it-suite/src/test/resources/mng-3284/repo/org/apache/maven/its/mng3284/maven-it-plugin-version/0.1/maven-it-plugin-version-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-3284/repo/org/apache/maven/its/mng3284/maven-it-plugin-version/0.1/maven-it-plugin-version-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3284/repo/org/apache/maven/its/mng3284/maven-it-plugin-version/0.2/maven-it-plugin-version-0.2.pom b/core-it-suite/src/test/resources/mng-3284/repo/org/apache/maven/its/mng3284/maven-it-plugin-version/0.2/maven-it-plugin-version-0.2.pom
index d6c8d22..87f7d09 100644
--- a/core-it-suite/src/test/resources/mng-3284/repo/org/apache/maven/its/mng3284/maven-it-plugin-version/0.2/maven-it-plugin-version-0.2.pom
+++ b/core-it-suite/src/test/resources/mng-3284/repo/org/apache/maven/its/mng3284/maven-it-plugin-version/0.2/maven-it-plugin-version-0.2.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3372/dependency-tree/pom.xml b/core-it-suite/src/test/resources/mng-3372/dependency-tree/pom.xml
index a6c51e4..e3ba854 100644
--- a/core-it-suite/src/test/resources/mng-3372/dependency-tree/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3372/dependency-tree/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>2.0.8</version>
+      <version>3.8.6</version>
     </dependency>
   
     <!-- These are directly from MNG-3372, but we need something that can actually resolve.
diff --git a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/pom.xml b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/pom.xml
index b14cd70..5e5b260 100644
--- a/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3372/direct-using-prefix/plugin/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/a/x/0.2-SNAPSHOT/x-0.2-20100119.121141-1.pom b/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/a/x/0.2-SNAPSHOT/x-0.2-20100119.121141-1.pom
index c2d4d4d..e5129c0 100644
--- a/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/a/x/0.2-SNAPSHOT/x-0.2-20100119.121141-1.pom
+++ b/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/a/x/0.2-SNAPSHOT/x-0.2-20100119.121141-1.pom
@@ -41,7 +41,7 @@
     <plugins>
       <plugin>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>2.2</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>tests</id>
@@ -53,7 +53,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-source-plugin</artifactId>
-        <version>2.0.4</version>
+        <version>3.2.1</version>
         <executions>
           <execution>
             <id>sources</id>
@@ -65,7 +65,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.5</version>
+        <version>3.4.0</version>
         <executions>
           <execution>
             <id>apidocs</id>
diff --git a/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/b/x/0.2-SNAPSHOT/x-0.2-20100119.121231-1.pom b/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/b/x/0.2-SNAPSHOT/x-0.2-20100119.121231-1.pom
index 92c5fc6..36f545b 100644
--- a/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/b/x/0.2-SNAPSHOT/x-0.2-20100119.121231-1.pom
+++ b/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/b/x/0.2-SNAPSHOT/x-0.2-20100119.121231-1.pom
@@ -41,7 +41,7 @@
     <plugins>
       <plugin>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>2.2</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>tests</id>
@@ -53,7 +53,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-source-plugin</artifactId>
-        <version>2.0.4</version>
+        <version>3.2.1</version>
         <executions>
           <execution>
             <id>sources</id>
@@ -65,7 +65,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.5</version>
+        <version>3.4.0</version>
         <executions>
           <execution>
             <id>apidocs</id>
diff --git a/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/c/x/0.2-SNAPSHOT/x-0.2-20100119.121243-1.pom b/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/c/x/0.2-SNAPSHOT/x-0.2-20100119.121243-1.pom
index cd000d8..9a22755 100644
--- a/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/c/x/0.2-SNAPSHOT/x-0.2-20100119.121243-1.pom
+++ b/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/c/x/0.2-SNAPSHOT/x-0.2-20100119.121243-1.pom
@@ -41,7 +41,7 @@
     <plugins>
       <plugin>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>2.2</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>tests</id>
@@ -53,7 +53,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-source-plugin</artifactId>
-        <version>2.0.4</version>
+        <version>3.2.1</version>
         <executions>
           <execution>
             <id>sources</id>
@@ -65,7 +65,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.5</version>
+        <version>3.4.0</version>
         <executions>
           <execution>
             <id>apidocs</id>
diff --git a/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/d/x/0.2-SNAPSHOT/x-0.2-20100119.121254-1.pom b/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/d/x/0.2-SNAPSHOT/x-0.2-20100119.121254-1.pom
index 766070c..0162c89 100644
--- a/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/d/x/0.2-SNAPSHOT/x-0.2-20100119.121254-1.pom
+++ b/core-it-suite/src/test/resources/mng-3379/repo/org/apache/maven/its/mng3379/d/x/0.2-SNAPSHOT/x-0.2-20100119.121254-1.pom
@@ -41,7 +41,7 @@
     <plugins>
       <plugin>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>2.2</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>tests</id>
@@ -53,7 +53,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-source-plugin</artifactId>
-        <version>2.0.4</version>
+        <version>3.2.1</version>
         <executions>
           <execution>
             <id>sources</id>
@@ -65,7 +65,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.5</version>
+        <version>3.4.0</version>
         <executions>
           <execution>
             <id>apidocs</id>
diff --git a/core-it-suite/src/test/resources/mng-3441/deploy-repo/org/apache/maven/its/mng3441/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20080306.011328-1.pom b/core-it-suite/src/test/resources/mng-3441/deploy-repo/org/apache/maven/its/mng3441/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20080306.011328-1.pom
index e433add..7256934 100644
--- a/core-it-suite/src/test/resources/mng-3441/deploy-repo/org/apache/maven/its/mng3441/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20080306.011328-1.pom
+++ b/core-it-suite/src/test/resources/mng-3441/deploy-repo/org/apache/maven/its/mng3441/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20080306.011328-1.pom
@@ -16,7 +16,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3441/pom.xml b/core-it-suite/src/test/resources/mng-3441/pom.xml
index 1b3475d..bf1834a 100644
--- a/core-it-suite/src/test/resources/mng-3441/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3441/pom.xml
@@ -16,7 +16,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3485/pom.xml b/core-it-suite/src/test/resources/mng-3485/pom.xml
index 04e6327..8086b99 100644
--- a/core-it-suite/src/test/resources/mng-3485/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3485/pom.xml
@@ -25,7 +25,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.12.4</version>
+          <version>3.0.0-M7</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/pom.xml
index c08508e..ea64de0 100644
--- a/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3498/maven-mng3498-plugin/pom.xml
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3586/test-1/repo/org/apache/maven/its/mng3586/plugin/0.1/plugin-0.1.pom b/core-it-suite/src/test/resources/mng-3586/test-1/repo/org/apache/maven/its/mng3586/plugin/0.1/plugin-0.1.pom
index 46c7c5e..7102bbe 100644
--- a/core-it-suite/src/test/resources/mng-3586/test-1/repo/org/apache/maven/its/mng3586/plugin/0.1/plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-3586/test-1/repo/org/apache/maven/its/mng3586/plugin/0.1/plugin-0.1.pom
@@ -49,7 +49,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.its.mng3586</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3652/test-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3652/test-plugin/pom.xml
index 3206281..c9d4475 100644
--- a/core-it-suite/src/test/resources/mng-3652/test-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3652/test-plugin/pom.xml
@@ -10,24 +10,26 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-compat</artifactId>
-      <version>3.0-beta-3</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>3.0-beta-3</version>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <scope>test</scope>
+      <version>3.8.6</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0-beta-3</version>
+      <version>3.8.6</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-compat</artifactId>
+      <version>3.8.6</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>3.4.2</version>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-3671/pom.xml b/core-it-suite/src/test/resources/mng-3671/pom.xml
index cc7a6be..e61a236 100644
--- a/core-it-suite/src/test/resources/mng-3671/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3671/pom.xml
@@ -19,7 +19,7 @@
     <plugins>
       <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.0.2</version>
+        <version>3.10.1</version>
         <dependencies>
           <dependency>
             <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/pom.xml
index f667c1b..1bf8c97 100644
--- a/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3684/maven-mng3684-plugin/pom.xml
@@ -11,7 +11,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3684/project/pom.xml b/core-it-suite/src/test/resources/mng-3684/project/pom.xml
index c836081..da5fa03 100644
--- a/core-it-suite/src/test/resources/mng-3684/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3684/project/pom.xml
@@ -11,7 +11,7 @@
       <plugins>
         <plugin>
           <artifactId>maven-site-plugin</artifactId>
-          <version>3.3</version>
+          <version>3.9.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/pom.xml
index a815228..573f388 100644
--- a/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3693/maven-mng3693-plugin/pom.xml
@@ -11,7 +11,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/pom.xml
index 14ef7e8..f70725e 100644
--- a/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3694/maven-mng3694-plugin/pom.xml
@@ -11,7 +11,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/pom.xml
index f8026c3..604dde4 100644
--- a/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3703/maven-mng3703-plugin/pom.xml
@@ -11,7 +11,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3703/project/pom.xml b/core-it-suite/src/test/resources/mng-3703/project/pom.xml
index fde24d1..9cdd076 100644
--- a/core-it-suite/src/test/resources/mng-3703/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3703/project/pom.xml
@@ -19,7 +19,7 @@
       <plugins>
         <plugin>
           <artifactId>maven-site-plugin</artifactId>
-          <version>3.3</version>
+          <version>3.9.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/pom.xml
index 407f299..fb7664e 100644
--- a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-directInvoke-plugin/pom.xml
@@ -9,7 +9,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/pom.xml
index 9a1041b..42288dc 100644
--- a/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/original-model/plugins/maven-mng3710-originalModel-plugin/pom.xml
@@ -9,7 +9,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/pom.xml
index 96d878a..338f54e 100644
--- a/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3710/pom-inheritance/maven-mng3710-pomInheritance-plugin/pom.xml
@@ -9,7 +9,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/pom.xml
index 9eaecdc..890a121 100644
--- a/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3716/maven-mng3716-plugin/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/pom.xml
index 94ae526..16ba243 100644
--- a/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3723/maven-mng3723-plugin/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/pom.xml
index 83b9850..bd63a72 100644
--- a/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3724/maven-mng3724-plugin/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/pom.xml
index 2d2ce10..e63d188 100644
--- a/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3729/maven-mng3729-plugin/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/pom.xml
index f3b9bfd..d77c44d 100644
--- a/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3740/projects.v1/maven-mng3740-plugin/pom.xml
@@ -14,7 +14,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/pom.xml
index 61cc08b..497274c 100644
--- a/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3740/projects.v2/maven-mng3740-plugin/pom.xml
@@ -14,7 +14,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/pom.xml b/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/pom.xml
index b10e3d7..50d0a3b 100644
--- a/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-3746/maven-mng3746-plugin/pom.xml
@@ -10,7 +10,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/core-it-suite/src/test/resources/mng-3814/repo/org/apache/maven/its/mng3814/maven-mng3814a-plugin/1.0/maven-mng3814a-plugin-1.0.pom b/core-it-suite/src/test/resources/mng-3814/repo/org/apache/maven/its/mng3814/maven-mng3814a-plugin/1.0/maven-mng3814a-plugin-1.0.pom
index 2ae7ebc..9b94528 100644
--- a/core-it-suite/src/test/resources/mng-3814/repo/org/apache/maven/its/mng3814/maven-mng3814a-plugin/1.0/maven-mng3814a-plugin-1.0.pom
+++ b/core-it-suite/src/test/resources/mng-3814/repo/org/apache/maven/its/mng3814/maven-mng3814a-plugin/1.0/maven-mng3814a-plugin-1.0.pom
@@ -42,7 +42,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3814/repo/org/apache/maven/its/mng3814/maven-mng3814b-plugin/1.0/maven-mng3814b-plugin-1.0.pom b/core-it-suite/src/test/resources/mng-3814/repo/org/apache/maven/its/mng3814/maven-mng3814b-plugin/1.0/maven-mng3814b-plugin-1.0.pom
index 7bdab29..3c741e3 100644
--- a/core-it-suite/src/test/resources/mng-3814/repo/org/apache/maven/its/mng3814/maven-mng3814b-plugin/1.0/maven-mng3814b-plugin-1.0.pom
+++ b/core-it-suite/src/test/resources/mng-3814/repo/org/apache/maven/its/mng3814/maven-mng3814b-plugin/1.0/maven-mng3814b-plugin-1.0.pom
@@ -42,7 +42,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3983/test-1/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom b/core-it-suite/src/test/resources/mng-3983/test-1/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
index a9a12a9..d3c3e13 100644
--- a/core-it-suite/src/test/resources/mng-3983/test-1/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-3983/test-1/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
@@ -44,7 +44,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3983/test-2/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom b/core-it-suite/src/test/resources/mng-3983/test-2/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
index a9a12a9..d3c3e13 100644
--- a/core-it-suite/src/test/resources/mng-3983/test-2/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-3983/test-2/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
@@ -44,7 +44,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-3983/test-3/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom b/core-it-suite/src/test/resources/mng-3983/test-3/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
index a9a12a9..d3c3e13 100644
--- a/core-it-suite/src/test/resources/mng-3983/test-3/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-3983/test-3/repo/org/apache/maven/its/mng3983/p/0.1/p-0.1.pom
@@ -44,7 +44,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4207/pom.xml b/core-it-suite/src/test/resources/mng-4207/pom.xml
index cb160f2..1f69a5e 100644
--- a/core-it-suite/src/test/resources/mng-4207/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4207/pom.xml
@@ -38,7 +38,7 @@
       <extension>
         <groupId>org.apache.maven.wagon</groupId>
         <artifactId>wagon-webdav-jackrabbit</artifactId>
-        <version>2.0</version>
+        <version>2.10</version>
       </extension>
       <!--
       FWIW, adding the extension below would make the test pass but it has to work with the bundled wagon, too.
diff --git a/core-it-suite/src/test/resources/mng-4269/repo/org/apache/maven/its/mng4269/maven-mng4269-plugin/0.1/maven-mng4269-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4269/repo/org/apache/maven/its/mng4269/maven-mng4269-plugin/0.1/maven-mng4269-plugin-0.1.pom
index 9ec3d61..819d98a 100644
--- a/core-it-suite/src/test/resources/mng-4269/repo/org/apache/maven/its/mng4269/maven-mng4269-plugin/0.1/maven-mng4269-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4269/repo/org/apache/maven/its/mng4269/maven-mng4269-plugin/0.1/maven-mng4269-plugin-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4317/repo-2/org/apache/maven/its/mng4317/maven-mng4317-plugin/0.2/maven-mng4317-plugin-0.2.pom b/core-it-suite/src/test/resources/mng-4317/repo-2/org/apache/maven/its/mng4317/maven-mng4317-plugin/0.2/maven-mng4317-plugin-0.2.pom
index 2459d7c..1c4fed9 100644
--- a/core-it-suite/src/test/resources/mng-4317/repo-2/org/apache/maven/its/mng4317/maven-mng4317-plugin/0.2/maven-mng4317-plugin-0.2.pom
+++ b/core-it-suite/src/test/resources/mng-4317/repo-2/org/apache/maven/its/mng4317/maven-mng4317-plugin/0.2/maven-mng4317-plugin-0.2.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4353/repo-1/org/apache/maven/its/mng4353/maven-mng4353-plugin/0.1/template.pom b/core-it-suite/src/test/resources/mng-4353/repo-1/org/apache/maven/its/mng4353/maven-mng4353-plugin/0.1/template.pom
index 71e048e..dec66dc 100644
--- a/core-it-suite/src/test/resources/mng-4353/repo-1/org/apache/maven/its/mng4353/maven-mng4353-plugin/0.1/template.pom
+++ b/core-it-suite/src/test/resources/mng-4353/repo-1/org/apache/maven/its/mng4353/maven-mng4353-plugin/0.1/template.pom
@@ -62,7 +62,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <!-- That's the dependency that needs to be resolved from the repo given in this POM -->
diff --git a/core-it-suite/src/test/resources/mng-4357/repo/org/apache/maven/its/mng4357/extension/0.1/extension-0.1.pom b/core-it-suite/src/test/resources/mng-4357/repo/org/apache/maven/its/mng4357/extension/0.1/extension-0.1.pom
index ecf817c..5fb8acb 100644
--- a/core-it-suite/src/test/resources/mng-4357/repo/org/apache/maven/its/mng4357/extension/0.1/extension-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4357/repo/org/apache/maven/its/mng4357/extension/0.1/extension-0.1.pom
@@ -49,7 +49,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4357/repo/org/apache/maven/its/mng4357/extension/0.2/extension-0.2.pom b/core-it-suite/src/test/resources/mng-4357/repo/org/apache/maven/its/mng4357/extension/0.2/extension-0.2.pom
index c0ab9a0..2d50bf6 100644
--- a/core-it-suite/src/test/resources/mng-4357/repo/org/apache/maven/its/mng4357/extension/0.2/extension-0.2.pom
+++ b/core-it-suite/src/test/resources/mng-4357/repo/org/apache/maven/its/mng4357/extension/0.2/extension-0.2.pom
@@ -49,7 +49,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4360/jackrabbit/pom.xml b/core-it-suite/src/test/resources/mng-4360/jackrabbit/pom.xml
index f1884ba..9807e67 100644
--- a/core-it-suite/src/test/resources/mng-4360/jackrabbit/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4360/jackrabbit/pom.xml
@@ -47,7 +47,7 @@
       <extension>
         <groupId>org.apache.maven.wagon</groupId>
         <artifactId>wagon-webdav-jackrabbit</artifactId>
-        <version>2.0</version>
+        <version>2.10</version>
       </extension>
     </extensions>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-4465/repo/org/apache/maven/its/mng4465/maven-mng4465-plugin/0.1/maven-mng4465-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4465/repo/org/apache/maven/its/mng4465/maven-mng4465-plugin/0.1/maven-mng4465-plugin-0.1.pom
index abea5ec..6ac4493 100644
--- a/core-it-suite/src/test/resources/mng-4465/repo/org/apache/maven/its/mng4465/maven-mng4465-plugin/0.1/maven-mng4465-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4465/repo/org/apache/maven/its/mng4465/maven-mng4465-plugin/0.1/maven-mng4465-plugin-0.1.pom
@@ -45,7 +45,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4479/pom.xml b/core-it-suite/src/test/resources/mng-4479/pom.xml
deleted file mode 100644
index 615ab81..0000000
--- a/core-it-suite/src/test/resources/mng-4479/pom.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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.
--->
-
-<project>
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>org.apache.maven.its.mng4479</groupId>
-  <artifactId>test</artifactId>
-  <version>0.1</version>
-  <packaging>jar</packaging>
-
-  <name>Maven Integration Test :: MNG-4479</name>
-  <description>
-    Verify that project-level plugin dependencies are used for direct invocations of the plugin and that they
-    can contribute classes required for the plugin configuration when the plugin is declared using properties
-    for its key.
-  </description>
-
-  <properties>
-    <pluginGroupId>org.apache.maven.its.plugins</pluginGroupId>
-    <pluginArtifactId>maven-it-plugin-parameter-implementation</pluginArtifactId>
-  </properties>
-
-  <build>
-    <plugins>
-      <plugin>
-        <!-- NOTE: It's the essential part of the test to use properties for the plugin key -->
-        <groupId>${pluginGroupId}</groupId>
-        <artifactId>${pluginArtifactId}</artifactId>
-        <version>2.1-SNAPSHOT</version>
-        <configuration>
-          <outputFile>target/param.properties</outputFile>
-          <!-- The implementation class for this parameter needs to be loaded from the dependency below -->
-          <theParameter implementation="org.apache.maven.plugin.coreit.ItImpl">
-            <field>passed</field>
-          </theParameter>
-        </configuration>
-        <dependencies>
-          <dependency>
-            <groupId>org.apache.maven.its.mng4479</groupId>
-            <artifactId>dep</artifactId>
-            <version>0.1</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <!-- NOTE: The presence of another plugin declaration is crucial to trigger the bug -->
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>2.1</version>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/.gitattributes b/core-it-suite/src/test/resources/mng-4479/repo/.gitattributes
deleted file mode 100644
index e3bce59..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/.gitattributes
+++ /dev/null
@@ -1,3 +0,0 @@
-*.pom    text eol=lf
-maven-metadata.xml    text eol=lf
-
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar
deleted file mode 100644
index 6c7566d..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar
+++ /dev/null
Binary files differ
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar.md5 b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar.md5
deleted file mode 100644
index 41e1b42..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar.md5
+++ /dev/null
@@ -1 +0,0 @@
-401d7e263a40309f7cfca4363b65afbd
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar.sha1 b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar.sha1
deleted file mode 100644
index baa8557..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0663c65954d3b1181ed1e9fd2d876801657f2d72
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom
deleted file mode 100644
index b4d3725..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom
+++ /dev/null
@@ -1,62 +0,0 @@
-<?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.
--->
-
-<project>
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>org.apache.maven.its.mng4479</groupId>
-  <artifactId>dep</artifactId>
-  <version>0.1</version>
-  <packaging>jar</packaging>
-
-  <name>Maven Integration Test :: MNG-4479 :: Plugin Dependency</name>
-
-  <distributionManagement>
-    <repository>
-      <id>maven-core-it</id>
-      <url>file:///${basedir}/repo</url>
-    </repository>
-  </distributionManagement>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven.its.plugins</groupId>
-      <artifactId>maven-it-plugin-parameter-implementation</artifactId>
-      <version>2.1-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>.</directory>
-        <includes>
-          <include>pom.xml</include>
-          <include>src/**</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-    </resources>
-  </build>
-</project>
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom.md5 b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom.md5
deleted file mode 100644
index 42cf178..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom.md5
+++ /dev/null
@@ -1 +0,0 @@
-5568ea5b0f81059a5a9a834148c8a37a
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom.sha1 b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom.sha1
deleted file mode 100644
index 83d0265..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/0.1/dep-0.1.pom.sha1
+++ /dev/null
@@ -1 +0,0 @@
-c94435a1e03ee11926cef6d20f6e320d346026b0
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml
deleted file mode 100644
index 16f5fcd..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<metadata>
-  <groupId>org.apache.maven.its.mng4479</groupId>
-  <artifactId>dep</artifactId>
-  <version>0.1</version>
-  <versioning>
-    <versions>
-      <version>0.1</version>
-    </versions>
-    <lastUpdated>20091206230357</lastUpdated>
-  </versioning>
-</metadata>
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml.md5 b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml.md5
deleted file mode 100644
index de21ecd..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml.md5
+++ /dev/null
@@ -1 +0,0 @@
-bbccb347c2dd460e8a3e6cf1e985e440
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml.sha1 b/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml.sha1
deleted file mode 100644
index 87ba49f..0000000
--- a/core-it-suite/src/test/resources/mng-4479/repo/org/apache/maven/its/mng4479/dep/maven-metadata.xml.sha1
+++ /dev/null
@@ -1 +0,0 @@
-419037264795a7894d642ee8a40169ac32512997
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4479/settings-template.xml b/core-it-suite/src/test/resources/mng-4479/settings-template.xml
deleted file mode 100644
index cde4215..0000000
--- a/core-it-suite/src/test/resources/mng-4479/settings-template.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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.
--->
-
-<settings>
-  <profiles>
-    <profile>
-      <id>maven-core-it-repo</id>
-      <repositories>
-        <repository>
-          <id>maven-core-it</id>
-          <url>@baseurl@/repo</url>
-          <releases>
-            <checksumPolicy>ignore</checksumPolicy>
-          </releases>
-          <snapshots>
-            <enabled>false</enabled>
-          </snapshots>
-        </repository>
-      </repositories>
-      <pluginRepositories>
-        <pluginRepository>
-          <id>maven-core-it</id>
-          <url>@baseurl@/repo</url>
-          <releases>
-            <checksumPolicy>ignore</checksumPolicy>
-          </releases>
-          <snapshots>
-            <enabled>false</enabled>
-          </snapshots>
-        </pluginRepository>
-      </pluginRepositories>
-    </profile>
-  </profiles>
-  <activeProfiles>
-    <activeProfile>maven-core-it-repo</activeProfile>
-  </activeProfiles>
-</settings>
diff --git a/core-it-suite/src/test/resources/mng-4482/repo-1/org/apache/maven/its/mng4482/maven-mng4482-plugin/0.1-SNAPSHOT/maven-mng4482-plugin-0.1-20091204.194743-1.pom b/core-it-suite/src/test/resources/mng-4482/repo-1/org/apache/maven/its/mng4482/maven-mng4482-plugin/0.1-SNAPSHOT/maven-mng4482-plugin-0.1-20091204.194743-1.pom
index 64bd877..93cf192 100644
--- a/core-it-suite/src/test/resources/mng-4482/repo-1/org/apache/maven/its/mng4482/maven-mng4482-plugin/0.1-SNAPSHOT/maven-mng4482-plugin-0.1-20091204.194743-1.pom
+++ b/core-it-suite/src/test/resources/mng-4482/repo-1/org/apache/maven/its/mng4482/maven-mng4482-plugin/0.1-SNAPSHOT/maven-mng4482-plugin-0.1-20091204.194743-1.pom
@@ -43,7 +43,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4482/repo-2/org/apache/maven/its/mng4482/maven-mng4482-plugin/0.1-SNAPSHOT/maven-mng4482-plugin-0.1-20091204.194942-2.pom b/core-it-suite/src/test/resources/mng-4482/repo-2/org/apache/maven/its/mng4482/maven-mng4482-plugin/0.1-SNAPSHOT/maven-mng4482-plugin-0.1-20091204.194942-2.pom
index e024735..6998715 100644
--- a/core-it-suite/src/test/resources/mng-4482/repo-2/org/apache/maven/its/mng4482/maven-mng4482-plugin/0.1-SNAPSHOT/maven-mng4482-plugin-0.1-20091204.194942-2.pom
+++ b/core-it-suite/src/test/resources/mng-4482/repo-2/org/apache/maven/its/mng4482/maven-mng4482-plugin/0.1-SNAPSHOT/maven-mng4482-plugin-0.1-20091204.194942-2.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4489/repo-a/org/apache/maven/its/mng4489/ext/0.1/ext-0.1.pom b/core-it-suite/src/test/resources/mng-4489/repo-a/org/apache/maven/its/mng4489/ext/0.1/ext-0.1.pom
index 37e0b28..302f740 100644
--- a/core-it-suite/src/test/resources/mng-4489/repo-a/org/apache/maven/its/mng4489/ext/0.1/ext-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4489/repo-a/org/apache/maven/its/mng4489/ext/0.1/ext-0.1.pom
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <!-- this dependency needs to be resolved from the repo in this POM -->
diff --git a/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom
index 65c6a4a..04a5b65 100644
--- a/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom
@@ -47,7 +47,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom.md5 b/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom.md5
index ffb7561..2839db5 100644
--- a/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom.md5
+++ b/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom.md5
@@ -1 +1 @@
-3f95d29de76828655789e5785026d174
\ No newline at end of file
+cb030c26156526e8f31390ccd1b8462c
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom.sha1 b/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom.sha1
index b4696de..943c5b9 100644
--- a/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom.sha1
+++ b/core-it-suite/src/test/resources/mng-4554/repo-1/org/apache/maven/its/mng4554/a-maven-plugin/0.1/a-maven-plugin-0.1.pom.sha1
@@ -1 +1 @@
-c922024196f921779ed781a49cf18935496638d9
\ No newline at end of file
+ba39882edd1776397321bbd8d0dd14cb71f06554
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom
index 05f51e9..f9b88a4 100644
--- a/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom
@@ -47,7 +47,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom.md5 b/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom.md5
index 8b25354..cbcc62c 100644
--- a/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom.md5
+++ b/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom.md5
@@ -1 +1 @@
-e2ddcf968ff240316b64740be361d49e
\ No newline at end of file
+5e6eb336fa7d01a5657b51739c9e96a9
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom.sha1 b/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom.sha1
index 0f138b6..10980aa 100644
--- a/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom.sha1
+++ b/core-it-suite/src/test/resources/mng-4554/repo-2/org/apache/maven/its/mng4554/b-maven-plugin/0.1/b-maven-plugin-0.1.pom.sha1
@@ -1 +1 @@
-16407d9c8581fb171ed665bc11d02d4f1b4201d9
\ No newline at end of file
+3ff9902a668457b8b84644e989c237ef58a568c0
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-4561/repo-a/org/apache/maven/its/mng4561/plugin/0.1/plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4561/repo-a/org/apache/maven/its/mng4561/plugin/0.1/plugin-0.1.pom
index c92f603..1689147 100644
--- a/core-it-suite/src/test/resources/mng-4561/repo-a/org/apache/maven/its/mng4561/plugin/0.1/plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4561/repo-a/org/apache/maven/its/mng4561/plugin/0.1/plugin-0.1.pom
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <!-- this dependency needs to be resolved from the repo in this POM -->
diff --git a/core-it-suite/src/test/resources/mng-4586/repo/org/apache/maven/its/mng4586/maven-mng4586-plugin/0.1/maven-mng4586-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4586/repo/org/apache/maven/its/mng4586/maven-mng4586-plugin/0.1/maven-mng4586-plugin-0.1.pom
index 486747c..dca4fb3 100644
--- a/core-it-suite/src/test/resources/mng-4586/repo/org/apache/maven/its/mng4586/maven-mng4586-plugin/0.1/maven-mng4586-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4586/repo/org/apache/maven/its/mng4586/maven-mng4586-plugin/0.1/maven-mng4586-plugin-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4654/repo/org/apache/maven/its/mng4654/maven-ext-plugin/1.0/maven-ext-plugin-1.0.pom b/core-it-suite/src/test/resources/mng-4654/repo/org/apache/maven/its/mng4654/maven-ext-plugin/1.0/maven-ext-plugin-1.0.pom
index f54daba..34515d9 100644
--- a/core-it-suite/src/test/resources/mng-4654/repo/org/apache/maven/its/mng4654/maven-ext-plugin/1.0/maven-ext-plugin-1.0.pom
+++ b/core-it-suite/src/test/resources/mng-4654/repo/org/apache/maven/its/mng4654/maven-ext-plugin/1.0/maven-ext-plugin-1.0.pom
@@ -38,7 +38,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/pom.xml b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/pom.xml
index fc9eae4..5308222 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-a/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/pom.xml b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/pom.xml
index 829c384..bfb4aa7 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/module-b/pom.xml
@@ -46,7 +46,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/pom.xml b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/pom.xml
index 2a2ba63..565b2fc 100644
--- a/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-outdated-packaged-artifact/pom.xml
@@ -38,8 +38,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
 
     <modules>
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/pom.xml b/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/pom.xml
index fc9eae4..5308222 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/module-a/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/pom.xml b/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/pom.xml
index 829c384..bfb4aa7 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/module-b/pom.xml
@@ -46,7 +46,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-4660-resume-from/pom.xml b/core-it-suite/src/test/resources/mng-4660-resume-from/pom.xml
index f98cc76..1589fd0 100644
--- a/core-it-suite/src/test/resources/mng-4660-resume-from/pom.xml
+++ b/core-it-suite/src/test/resources/mng-4660-resume-from/pom.xml
@@ -38,8 +38,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
 
     <modules>
diff --git a/core-it-suite/src/test/resources/mng-4745/repo/org/apache/maven/its/mng4745/maven-it-plugin/1.0/maven-it-plugin-1.0.pom b/core-it-suite/src/test/resources/mng-4745/repo/org/apache/maven/its/mng4745/maven-it-plugin/1.0/maven-it-plugin-1.0.pom
index 5b9f7fd..55fd03c 100644
--- a/core-it-suite/src/test/resources/mng-4745/repo/org/apache/maven/its/mng4745/maven-it-plugin/1.0/maven-it-plugin-1.0.pom
+++ b/core-it-suite/src/test/resources/mng-4745/repo/org/apache/maven/its/mng4745/maven-it-plugin/1.0/maven-it-plugin-1.0.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4745/repo/org/apache/maven/its/mng4745/maven-it-plugin/1.1/maven-it-plugin-1.1.pom b/core-it-suite/src/test/resources/mng-4745/repo/org/apache/maven/its/mng4745/maven-it-plugin/1.1/maven-it-plugin-1.1.pom
index d044dd7..be9aca7 100644
--- a/core-it-suite/src/test/resources/mng-4745/repo/org/apache/maven/its/mng4745/maven-it-plugin/1.1/maven-it-plugin-1.1.pom
+++ b/core-it-suite/src/test/resources/mng-4745/repo/org/apache/maven/its/mng4745/maven-it-plugin/1.1/maven-it-plugin-1.1.pom
@@ -47,7 +47,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4761/repo/org/apache/maven/its/mng4761/maven-mng4761-plugin/0.1/maven-mng4761-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4761/repo/org/apache/maven/its/mng4761/maven-mng4761-plugin/0.1/maven-mng4761-plugin-0.1.pom
index 2f1b027..c28b178 100644
--- a/core-it-suite/src/test/resources/mng-4761/repo/org/apache/maven/its/mng4761/maven-mng4761-plugin/0.1/maven-mng4761-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4761/repo/org/apache/maven/its/mng4761/maven-mng4761-plugin/0.1/maven-mng4761-plugin-0.1.pom
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
@@ -58,7 +58,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-plugin-plugin</artifactId>
-        <version>2.5.1</version>
+        <version>3.6.4</version>
         <configuration>
           <goalPrefix>test-plugin</goalPrefix>
         </configuration>
diff --git a/core-it-suite/src/test/resources/mng-4840/repo/org/apache/maven/its/mng4840/maven-mng4840-plugin/0.1/maven-mng4840-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4840/repo/org/apache/maven/its/mng4840/maven-mng4840-plugin/0.1/maven-mng4840-plugin-0.1.pom
index 51862d5..8fb98ab 100644
--- a/core-it-suite/src/test/resources/mng-4840/repo/org/apache/maven/its/mng4840/maven-mng4840-plugin/0.1/maven-mng4840-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4840/repo/org/apache/maven/its/mng4840/maven-mng4840-plugin/0.1/maven-mng4840-plugin-0.1.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4840/repo/org/apache/maven/its/mng4840/maven-mng4840-plugin/0.2/maven-mng4840-plugin-0.2.pom b/core-it-suite/src/test/resources/mng-4840/repo/org/apache/maven/its/mng4840/maven-mng4840-plugin/0.2/maven-mng4840-plugin-0.2.pom
index 7bdc078..3523ecb 100644
--- a/core-it-suite/src/test/resources/mng-4840/repo/org/apache/maven/its/mng4840/maven-mng4840-plugin/0.2/maven-mng4840-plugin-0.2.pom
+++ b/core-it-suite/src/test/resources/mng-4840/repo/org/apache/maven/its/mng4840/maven-mng4840-plugin/0.2/maven-mng4840-plugin-0.2.pom
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 
diff --git a/core-it-suite/src/test/resources/mng-4925/repo/org/apache/maven/its/mng4925/maven-mng4925-plugin/0.1/maven-mng4925-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-4925/repo/org/apache/maven/its/mng4925/maven-mng4925-plugin/0.1/maven-mng4925-plugin-0.1.pom
index 53b7e52..83e76be 100644
--- a/core-it-suite/src/test/resources/mng-4925/repo/org/apache/maven/its/mng4925/maven-mng4925-plugin/0.1/maven-mng4925-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-4925/repo/org/apache/maven/its/mng4925/maven-mng4925-plugin/0.1/maven-mng4925-plugin-0.1.pom
@@ -42,7 +42,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
diff --git a/core-it-suite/src/test/resources/mng-5019/repo/org/apache/maven/its/mng5019/maven-it-plugin/0.1/maven-it-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-5019/repo/org/apache/maven/its/mng5019/maven-it-plugin/0.1/maven-it-plugin-0.1.pom
index 8812a2b..d36561c 100644
--- a/core-it-suite/src/test/resources/mng-5019/repo/org/apache/maven/its/mng5019/maven-it-plugin/0.1/maven-it-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-5019/repo/org/apache/maven/its/mng5019/maven-it-plugin/0.1/maven-it-plugin-0.1.pom
@@ -35,13 +35,13 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>3.0</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-5207/prepare/master-1.pom b/core-it-suite/src/test/resources/mng-5207/prepare/master-1.pom
index 3b0b082..363af63 100644
--- a/core-it-suite/src/test/resources/mng-5207/prepare/master-1.pom
+++ b/core-it-suite/src/test/resources/mng-5207/prepare/master-1.pom
@@ -227,18 +227,18 @@
     <!-- ======= -->
     <!-- Plugins -->
     <!-- ======= -->
-    <version.org.apache.maven.plugins.assembly>2.2.1</version.org.apache.maven.plugins.assembly>
-    <version.org.apache.maven.plugins.clean>2.4.1</version.org.apache.maven.plugins.clean>
-    <version.org.apache.maven.plugins.compiler>2.3.2</version.org.apache.maven.plugins.compiler>
-    <version.org.apache.maven.plugins.dependency>2.3</version.org.apache.maven.plugins.dependency>
-    <version.org.apache.maven.plugins.deploy>2.7</version.org.apache.maven.plugins.deploy>
-    <version.org.apache.maven.plugins.ear>2.6</version.org.apache.maven.plugins.ear>
-    <version.org.apache.maven.plugins.ejb>2.3</version.org.apache.maven.plugins.ejb>
-    <version.org.apache.maven.plugins.install>2.3.1</version.org.apache.maven.plugins.install>
-    <version.org.apache.maven.plugins.jar>2.3.2</version.org.apache.maven.plugins.jar>
-    <version.org.apache.maven.plugins.resources>2.5</version.org.apache.maven.plugins.resources>
-    <version.org.apache.maven.plugins.source>2.1.2</version.org.apache.maven.plugins.source>
-    <version.org.apache.maven.plugins.surefire>2.9</version.org.apache.maven.plugins.surefire>
+    <version.org.apache.maven.plugins.assembly>3.4.0</version.org.apache.maven.plugins.assembly>
+    <version.org.apache.maven.plugins.clean>3.2.0</version.org.apache.maven.plugins.clean>
+    <version.org.apache.maven.plugins.compiler>3.10.1</version.org.apache.maven.plugins.compiler>
+    <version.org.apache.maven.plugins.dependency>3.3.0</version.org.apache.maven.plugins.dependency>
+    <version.org.apache.maven.plugins.deploy>3.0.0</version.org.apache.maven.plugins.deploy>
+    <version.org.apache.maven.plugins.ear>3.3.0</version.org.apache.maven.plugins.ear>
+    <version.org.apache.maven.plugins.ejb>3.1.0</version.org.apache.maven.plugins.ejb>
+    <version.org.apache.maven.plugins.install>3.0.1</version.org.apache.maven.plugins.install>
+    <version.org.apache.maven.plugins.jar>3.3.0</version.org.apache.maven.plugins.jar>
+    <version.org.apache.maven.plugins.resources>3.2.0</version.org.apache.maven.plugins.resources>
+    <version.org.apache.maven.plugins.source>3.2.1</version.org.apache.maven.plugins.source>
+    <version.org.apache.maven.plugins.surefire>3.0.0-M7</version.org.apache.maven.plugins.surefire>
 
     <version.org.codehaus.mojo.build-helper-plugin>1.7</version.org.codehaus.mojo.build-helper-plugin>
 
diff --git a/core-it-suite/src/test/resources/mng-5207/prepare/master-x.pom b/core-it-suite/src/test/resources/mng-5207/prepare/master-x.pom
index 5d5999f..35c5d79 100644
--- a/core-it-suite/src/test/resources/mng-5207/prepare/master-x.pom
+++ b/core-it-suite/src/test/resources/mng-5207/prepare/master-x.pom
@@ -227,18 +227,18 @@
     <!-- ======= -->
     <!-- Plugins -->
     <!-- ======= -->
-    <version.org.apache.maven.plugins.assembly>2.2.1</version.org.apache.maven.plugins.assembly>
-    <version.org.apache.maven.plugins.clean>2.4.1</version.org.apache.maven.plugins.clean>
-    <version.org.apache.maven.plugins.compiler>2.3.2</version.org.apache.maven.plugins.compiler>
-    <version.org.apache.maven.plugins.dependency>2.3</version.org.apache.maven.plugins.dependency>
-    <version.org.apache.maven.plugins.deploy>2.7</version.org.apache.maven.plugins.deploy>
-    <version.org.apache.maven.plugins.ear>2.6</version.org.apache.maven.plugins.ear>
-    <version.org.apache.maven.plugins.ejb>2.3</version.org.apache.maven.plugins.ejb>
-    <version.org.apache.maven.plugins.install>2.3.1</version.org.apache.maven.plugins.install>
-    <version.org.apache.maven.plugins.jar>2.3.2</version.org.apache.maven.plugins.jar>
-    <version.org.apache.maven.plugins.resources>2.5</version.org.apache.maven.plugins.resources>
-    <version.org.apache.maven.plugins.source>2.1.2</version.org.apache.maven.plugins.source>
-    <version.org.apache.maven.plugins.surefire>2.9</version.org.apache.maven.plugins.surefire>
+    <version.org.apache.maven.plugins.assembly>3.4.0</version.org.apache.maven.plugins.assembly>
+    <version.org.apache.maven.plugins.clean>3.2.0</version.org.apache.maven.plugins.clean>
+    <version.org.apache.maven.plugins.compiler>3.10.1</version.org.apache.maven.plugins.compiler>
+    <version.org.apache.maven.plugins.dependency>3.3.0</version.org.apache.maven.plugins.dependency>
+    <version.org.apache.maven.plugins.deploy>3.0.0</version.org.apache.maven.plugins.deploy>
+    <version.org.apache.maven.plugins.ear>3.2.0</version.org.apache.maven.plugins.ear>
+    <version.org.apache.maven.plugins.ejb>3.1.0</version.org.apache.maven.plugins.ejb>
+    <version.org.apache.maven.plugins.install>3.0.1</version.org.apache.maven.plugins.install>
+    <version.org.apache.maven.plugins.jar>3.3.0</version.org.apache.maven.plugins.jar>
+    <version.org.apache.maven.plugins.resources>3.3.0</version.org.apache.maven.plugins.resources>
+    <version.org.apache.maven.plugins.source>3.2.1</version.org.apache.maven.plugins.source>
+    <version.org.apache.maven.plugins.surefire>3.0.0-M7</version.org.apache.maven.plugins.surefire>
 
     <version.org.codehaus.mojo.build-helper-plugin>1.7</version.org.codehaus.mojo.build-helper-plugin>
 
diff --git a/core-it-suite/src/test/resources/mng-5208/spy/pom.xml b/core-it-suite/src/test/resources/mng-5208/spy/pom.xml
index 130e308..2a69a2b 100644
--- a/core-it-suite/src/test/resources/mng-5208/spy/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5208/spy/pom.xml
@@ -12,7 +12,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -50,7 +50,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
-        <version>2.2</version>
+        <version>3.3.0</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5280/fake-maven-plugin/fake-maven-plugin-1.0.pom b/core-it-suite/src/test/resources/mng-5280/fake-maven-plugin/fake-maven-plugin-1.0.pom
index 495aa59..19ee18e 100644
--- a/core-it-suite/src/test/resources/mng-5280/fake-maven-plugin/fake-maven-plugin-1.0.pom
+++ b/core-it-suite/src/test/resources/mng-5280/fake-maven-plugin/fake-maven-plugin-1.0.pom
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/pom.xml b/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/pom.xml
index 8a3a944..46a94d4 100644
--- a/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5389-lifecycleParticipant-afterSession/extension/pom.xml
@@ -28,7 +28,7 @@
   <version>0.1</version>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5503/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5503/module-a/pom.xml
index 0e63173..c7b09f2 100644
--- a/core-it-suite/src/test/resources/mng-5503/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5503/module-a/pom.xml
@@ -8,7 +8,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.4.0</version>
         <configuration>
           <descriptors>
             <descriptor>zip.xml</descriptor>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/pom.xml b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/pom.xml
index fc5bf95..668b362 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension-plugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/pom.xml b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/pom.xml
index ce16209..0d43230 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/extension/pom.xml
@@ -28,7 +28,7 @@
   <version>0.1</version>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/pom.xml
index 687429d..58bbf39 100644
--- a/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5530-mojo-execution-scope/plugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/pom.xml b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/pom.xml
index 6714047..f3c33fc 100644
--- a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/new-plugin/pom.xml
@@ -9,8 +9,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
     <maven-version>3.1.0</maven-version>
   </properties>
 
@@ -44,7 +44,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/pom.xml b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/pom.xml
index f89adfb..ab97b54 100644
--- a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/old-plugin-with-relocation/pom.xml
@@ -9,8 +9,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
     <maven-version>3.1.0</maven-version>
   </properties>
 
@@ -51,7 +51,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/project/pom.xml b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/project/pom.xml
index 8b17bd2..675ee0b 100644
--- a/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5561-plugin-relocation-loses-configuration/project/pom.xml
@@ -9,8 +9,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
   <build>
diff --git a/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/plugin/pom.xml
index 226db24..6c12de7 100644
--- a/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5572-reactor-plugin-extensions/plugin/pom.xml
@@ -52,7 +52,7 @@
       <plugin> <!-- force attaching file during 'mvn install'  -->
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>2.2</version>
+        <version>3.3.0</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5576-cd-friendly-versions/pom.xml b/core-it-suite/src/test/resources/mng-5576-cd-friendly-versions/pom.xml
index 42c3160..d500f10 100644
--- a/core-it-suite/src/test/resources/mng-5576-cd-friendly-versions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5576-cd-friendly-versions/pom.xml
@@ -39,28 +39,28 @@
         <plugin><!-- clean lifecycle -->
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-clean-plugin</artifactId>
-          <version>3.1.0</version>
+          <version>3.2.0</version>
         </plugin>
         <plugin><!-- site lifecycle -->
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-site-plugin</artifactId>
-          <version>3.7.1</version>
+          <version>3.9.1</version>
         </plugin>
         <!-- default lifecycle jar packaging -->
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-resources-plugin</artifactId>
-          <version>3.1.0</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>3.7.0</version>
+          <version>3.10.1</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.12</version>
+          <version>3.0.0-M7</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -70,12 +70,12 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-install-plugin</artifactId>
-          <version>2.5.2</version>
+          <version>3.0.1</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-deploy-plugin</artifactId>
-          <version>2.8.2</version>
+          <version>3.0.0</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/pom.xml b/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/pom.xml
index 2ee9228..3101534 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/extension-plugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/extension/pom.xml b/core-it-suite/src/test/resources/mng-5578-session-scope/extension/pom.xml
index 21f1086..f7b9ecc 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/extension/pom.xml
@@ -28,7 +28,7 @@
   <version>0.1</version>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/pom.xml
index 22dd8c4..a6c8731 100644
--- a/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5578-session-scope/plugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml b/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml
index c8a4a6d..ae434b2 100644
--- a/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5581-lifecycle-mapping-delegate/extension/pom.xml
@@ -27,11 +27,15 @@
   <artifactId>mng-5581-lifecycle-mapping-delegate-extension</artifactId>
   <version>0.1</version>
 
+  <properties>
+    <maven-version>3.8.6</maven-version>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.2.5</version>
+      <version>${maven-version}</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/pom.xml b/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/pom.xml
index 2725849..71bfd39 100644
--- a/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5591-workspace-reader/extension/pom.xml
@@ -28,14 +28,14 @@
   <version>0.1</version>
 
   <properties>
-    <maven.version>3.2.1</maven.version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>${maven.version}</version>
+      <version>${maven-version}</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5639-import-scope-pom-resolution/pom.xml b/core-it-suite/src/test/resources/mng-5639-import-scope-pom-resolution/pom.xml
index ce839f3..1ee39c4 100644
--- a/core-it-suite/src/test/resources/mng-5639-import-scope-pom-resolution/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5639-import-scope-pom-resolution/pom.xml
@@ -44,7 +44,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
-                    <version>2.12.4</version>
+                    <version>3.0.0-M7</version>
                 </plugin>
             </plugins>
         </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/pom.xml b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/pom.xml
index 7f1730e..6702735 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/badplugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
@@ -52,7 +52,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-plugin-plugin</artifactId>
-        <version>3.3</version>
+        <version>3.6.4</version>
         <executions>
           <execution>
             <goals>
diff --git a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/pom.xml b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/pom.xml
index 64825e2..322bb4b 100644
--- a/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5640-lifecycleParticipant-afterSession/extension/pom.xml
@@ -28,7 +28,7 @@
   <version>0.1</version>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5663-nested-import-scope-pom-resolution/pom-template.xml b/core-it-suite/src/test/resources/mng-5663-nested-import-scope-pom-resolution/pom-template.xml
index 6ffaf76..39d9d1f 100644
--- a/core-it-suite/src/test/resources/mng-5663-nested-import-scope-pom-resolution/pom-template.xml
+++ b/core-it-suite/src/test/resources/mng-5663-nested-import-scope-pom-resolution/pom-template.xml
@@ -65,7 +65,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-resources-plugin</artifactId>
-                    <version>2.6</version>
+                    <version>3.3.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
@@ -75,7 +75,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-jar-plugin</artifactId>
-                    <version>2.2</version>
+                    <version>3.3.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
@@ -85,7 +85,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-install-plugin</artifactId>
-                    <version>2.5.2</version>
+                    <version>3.0.1</version>
                 </plugin>
             </plugins>
         </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-5669-read-poms-once/pom.xml b/core-it-suite/src/test/resources/mng-5669-read-poms-once/pom.xml
index 8b41e0b..c764fc9 100644
--- a/core-it-suite/src/test/resources/mng-5669-read-poms-once/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5669-read-poms-once/pom.xml
@@ -39,7 +39,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-resources-plugin</artifactId>
-          <version>3.2.0</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -49,12 +49,12 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
-          <version>3.0.0-M5</version>
+          <version>3.0.0-M7</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
-          <version>3.2.0</version>
+          <version>3.3.0</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/pom.xml
index c261daf..424c53e 100644
--- a/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5742-build-extension-classloader/plugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.2.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/pom.xml
index 691f090..b6c5474 100644
--- a/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5753-custom-mojo-execution-configurator/plugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.3.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/pom.xml
index 8104eb1..cb7b7de 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-a/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/pom.xml
index b64336a..4f6699d 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-b/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/pom.xml
index 8484595..02581e3 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-c/pom.xml
@@ -46,7 +46,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/pom.xml
index 3a501b6..b193dd7 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/module-d/pom.xml
@@ -46,7 +46,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/pom.xml
index 2d15253..831ad90 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/four-modules/pom.xml
@@ -37,8 +37,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
 
     <modules>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml
index 8104eb1..cb7b7de 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-a/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml
index b64336a..4f6699d 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-b/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml
index 8484595..02581e3 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/module-c/pom.xml
@@ -46,7 +46,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml
index 8df0d4c..ca797e0 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-dependent/pom.xml
@@ -37,8 +37,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
 
     <modules>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
index 8f0f721..d92e689 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-a/pom.xml
@@ -43,7 +43,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
index 195303d..344f034 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/module-b/pom.xml
@@ -43,7 +43,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
index d7ffdaa..45463c5 100644
--- a/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5760-resume-feature/parent-independent/pom.xml
@@ -37,8 +37,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
 
     <modules>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/pom.xml
index f4e9f5d..e993782 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions-no-descriptor/pom.xml
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/pom.xml
index c2da347..ac31d75 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-core-extensions/pom.xml
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/pom.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/pom.xml
index 7b392ba..9f34696 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo-src/maven-it-plugin-core-extensions-client/pom.xml
@@ -40,13 +40,13 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions-no-descriptor/0.1/maven-it-core-extensions-no-descriptor-0.1.pom b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions-no-descriptor/0.1/maven-it-core-extensions-no-descriptor-0.1.pom
index f4e9f5d..e993782 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions-no-descriptor/0.1/maven-it-core-extensions-no-descriptor-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions-no-descriptor/0.1/maven-it-core-extensions-no-descriptor-0.1.pom
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions-no-descriptor/0.1/maven-it-core-extensions-no-descriptor-0.1.pom.sha1 b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions-no-descriptor/0.1/maven-it-core-extensions-no-descriptor-0.1.pom.sha1
index 6cf46de..c120fcc 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions-no-descriptor/0.1/maven-it-core-extensions-no-descriptor-0.1.pom.sha1
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions-no-descriptor/0.1/maven-it-core-extensions-no-descriptor-0.1.pom.sha1
@@ -1 +1 @@
-88a9ea10005b24ebe90b38cd30dffdc435b126e8
\ No newline at end of file
+84ac1a33979dd8ef069df196cc2a5197b7c4fdb1
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom
index c2da347..ac31d75 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom.sha1 b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom.sha1
index 05d7415..7c2a24c 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom.sha1
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom.sha1
@@ -1 +1 @@
-8585d6a605ef22f8ba8674c193e774fc71b38941
\ No newline at end of file
+9681b78533948ce4b5fabdc697dfd4511e3ebd35
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-plugin-core-extensions-client/0.1/maven-it-plugin-core-extensions-client-0.1.pom b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-plugin-core-extensions-client/0.1/maven-it-plugin-core-extensions-client-0.1.pom
index 7b392ba..9f34696 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-plugin-core-extensions-client/0.1/maven-it-plugin-core-extensions-client-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-plugin-core-extensions-client/0.1/maven-it-plugin-core-extensions-client-0.1.pom
@@ -40,13 +40,13 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>3.0.3</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-plugin-core-extensions-client/0.1/maven-it-plugin-core-extensions-client-0.1.pom.sha1 b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-plugin-core-extensions-client/0.1/maven-it-plugin-core-extensions-client-0.1.pom.sha1
index 68c9c7c..f441132 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-plugin-core-extensions-client/0.1/maven-it-plugin-core-extensions-client-0.1.pom.sha1
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/repo/org/apache/maven/its/it-core-extensions/maven-it-plugin-core-extensions-client/0.1/maven-it-plugin-core-extensions-client-0.1.pom.sha1
@@ -1 +1 @@
-520e6cd05914cf86eae16861af23d00a854262a3
\ No newline at end of file
+a7dd3cd05b5c2c2059ac6674a8f90e9a0cb8afb7
\ No newline at end of file
diff --git a/core-it-suite/src/test/resources/mng-5771-core-extensions/settings-template-mirror-auth.xml b/core-it-suite/src/test/resources/mng-5771-core-extensions/settings-template-mirror-auth.xml
index efaaab3..adacec1 100644
--- a/core-it-suite/src/test/resources/mng-5771-core-extensions/settings-template-mirror-auth.xml
+++ b/core-it-suite/src/test/resources/mng-5771-core-extensions/settings-template-mirror-auth.xml
@@ -23,12 +23,18 @@
         <repository>
           <id>central</id>
           <url>http://central</url>
+          <releases>
+            <checksumPolicy>ignore</checksumPolicy>
+          </releases>
         </repository>
       </repositories>
       <pluginRepositories>
         <pluginRepository>
           <id>central</id>
           <url>http://central</url>
+          <releases>
+            <checksumPolicy>ignore</checksumPolicy>
+          </releases>
         </pluginRepository>
       </pluginRepositories>
     </profile>
diff --git a/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/pom.xml b/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/pom.xml
index 2fc285c..a205cc9 100644
--- a/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5783-plugin-dependency-filtering/plugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.2.5</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-5868/pom.xml b/core-it-suite/src/test/resources/mng-5868/pom.xml
index 13bb490..c10fb55 100644
--- a/core-it-suite/src/test/resources/mng-5868/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5868/pom.xml
@@ -33,6 +33,11 @@
             <artifactClassifier>run</artifactClassifier>
           </configuration>
         </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <version>3.0.0</version>
+        </plugin>
       </plugins>
     </pluginManagement>
     <plugins>
diff --git a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/pom.xml b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/pom.xml
index e3d34da..8ab6242 100644
--- a/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5895-ci-friendly-usage-with-property/pom.xml
@@ -37,17 +37,17 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.1.0</version>
+          <version>3.4.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
-          <version>2.2</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>2.0.2</version>
+          <version>3.10.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-5898/pom.xml b/core-it-suite/src/test/resources/mng-5898/pom.xml
index c127681..05b0723 100644
--- a/core-it-suite/src/test/resources/mng-5898/pom.xml
+++ b/core-it-suite/src/test/resources/mng-5898/pom.xml
@@ -18,37 +18,37 @@
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
-            <version>2.0.2</version>
+            <version>3.10.1</version>
           </plugin>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-ejb-plugin</artifactId>
-            <version>2.5.1</version>
+            <version>3.2.1</version>
           </plugin>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-jar-plugin</artifactId>
-            <version>2.2</version>
+            <version>3.3.0</version>
           </plugin>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-resources-plugin</artifactId>
-            <version>2.7</version>
+            <version>3.3.0</version>
           </plugin>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-ear-plugin</artifactId>
-            <version>2.8</version>
+            <version>3.2.0</version>
           </plugin>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-war-plugin</artifactId>
-            <version>2.6</version>
+            <version>3.3.2</version>
           </plugin>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-surefire-plugin</artifactId>
-            <version>2.12.4</version>
+            <version>3.0.0-M7</version>
           </plugin>
         </plugins>
       </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6071/pom.xml b/core-it-suite/src/test/resources/mng-6071/pom.xml
index 9704eee..3ac27f9 100644
--- a/core-it-suite/src/test/resources/mng-6071/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6071/pom.xml
@@ -12,8 +12,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
   <dependencies>
@@ -30,7 +30,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-3/pom.xml b/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-3/pom.xml
index f3f5ea1..b2656c8 100644
--- a/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6090-ci-friendly/module-3/pom.xml
@@ -35,7 +35,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.4.0</version>
         <executions>
           <execution>
             <id>assemblies</id>
diff --git a/core-it-suite/src/test/resources/mng-6090-ci-friendly/pom.xml b/core-it-suite/src/test/resources/mng-6090-ci-friendly/pom.xml
index 17627bf..bb4baf8 100644
--- a/core-it-suite/src/test/resources/mng-6090-ci-friendly/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6090-ci-friendly/pom.xml
@@ -43,17 +43,17 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.1.0</version>
+          <version>3.4.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
-          <version>2.2</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>2.0.2</version>
+          <version>3.10.1</version>
         </plugin>
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
diff --git a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/pom.xml b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/pom.xml
index 9db0e99..b894cbc 100644
--- a/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6118-submodule-invocation-full-reactor/pom.xml
@@ -37,8 +37,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
   <modules>
@@ -53,12 +53,12 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-resources-plugin</artifactId>
-          <version>2.7</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>2.0.2</version>
+          <version>3.10.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/pom.xml b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/pom.xml
index b8db3ed..ed34ab5 100644
--- a/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6127-plugin-execution-configuration-interference/plugin/pom.xml
@@ -29,7 +29,7 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven-version>3.3.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-6189-site-reportPlugins-warning/pom.xml b/core-it-suite/src/test/resources/mng-6189-site-reportPlugins-warning/pom.xml
index 28d71d4..ade3ce5 100644
--- a/core-it-suite/src/test/resources/mng-6189-site-reportPlugins-warning/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6189-site-reportPlugins-warning/pom.xml
@@ -52,7 +52,7 @@
             <reportPlugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-surefire-report-plugin</artifactId>
-              <version>2.5</version>
+              <version>3.0.0-M5</version>
             </reportPlugin>
           </reportPlugins>
         </configuration>
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/pom.xml b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/pom.xml
index bcd2a69..b3e276b 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-core-extensions/pom.xml
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.3.1</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/pom.xml b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/pom.xml
index 6e1adfd..3ddccbf 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo-src/maven-it-plugin/pom.xml
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.3.1</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo/org/apache/maven/its/6210-core-extensions-scopes/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo/org/apache/maven/its/6210-core-extensions-scopes/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom
index bcd2a69..b3e276b 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo/org/apache/maven/its/6210-core-extensions-scopes/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo/org/apache/maven/its/6210-core-extensions-scopes/maven-it-core-extensions/0.1/maven-it-core-extensions-0.1.pom
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.3.1</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo/org/apache/maven/its/6210-core-extensions-scopes/maven-it-plugin/0.1/maven-it-plugin-0.1.pom b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo/org/apache/maven/its/6210-core-extensions-scopes/maven-it-plugin/0.1/maven-it-plugin-0.1.pom
index 6e1adfd..0ec6cd6 100644
--- a/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo/org/apache/maven/its/6210-core-extensions-scopes/maven-it-plugin/0.1/maven-it-plugin-0.1.pom
+++ b/core-it-suite/src/test/resources/mng-6210-core-extensions-scopes/repo/org/apache/maven/its/6210-core-extensions-scopes/maven-it-plugin/0.1/maven-it-plugin-0.1.pom
@@ -40,13 +40,13 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.3.1</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>3.3.1</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/pom.xml b/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/pom.xml
index 8afe9ac..89e08be 100644
--- a/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6240-plugin-extension-aether-provider/plugin-extension/pom.xml
@@ -28,7 +28,7 @@
   <packaging>maven-plugin</packaging>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven-version>3.3.9</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
   <dependencies>
     <dependency>
@@ -39,7 +39,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-aether-provider</artifactId>
+      <artifactId>maven-resolver-provider</artifactId>
       <version>${maven-version}</version>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-6352-print-version/pom.xml b/core-it-suite/src/test/resources/mng-6352-print-version/pom.xml
index 811d47c..102381a 100644
--- a/core-it-suite/src/test/resources/mng-6352-print-version/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6352-print-version/pom.xml
@@ -40,17 +40,17 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.1.0</version>
+          <version>3.4.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
-          <version>2.2</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>2.0.2</version>
+          <version>3.10.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/pom.xml
index 43a7aba..66d7a95 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version-aggregator/pom.xml
@@ -40,17 +40,17 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.1.0</version>
+          <version>3.4.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
-          <version>2.2</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>2.0.2</version>
+          <version>3.10.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6391-print-version/pom.xml b/core-it-suite/src/test/resources/mng-6391-print-version/pom.xml
index 811d47c..102381a 100644
--- a/core-it-suite/src/test/resources/mng-6391-print-version/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6391-print-version/pom.xml
@@ -40,17 +40,17 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.1.0</version>
+          <version>3.4.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
-          <version>2.2</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>2.0.2</version>
+          <version>3.10.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/pom.xml b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/pom.xml
index 47533fc..7c812a2 100644
--- a/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6506-package-annotation/plugin/pom.xml
@@ -27,21 +27,17 @@
   <version>0.1</version>
   <packaging>maven-plugin</packaging>
 
-  <properties>
-    <maven-version>3.6.0</maven-version>
-  </properties>
-
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.plugin-tools</groupId>
       <artifactId>maven-plugin-annotations</artifactId>
-      <version>${maven-version}</version>
+      <version>3.3</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>${maven-version}</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-suite/src/test/resources/mng-6511-optional-project-selection/pom.xml b/core-it-suite/src/test/resources/mng-6511-optional-project-selection/pom.xml
index 98c2253..ee5591b 100644
--- a/core-it-suite/src/test/resources/mng-6511-optional-project-selection/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6511-optional-project-selection/pom.xml
@@ -37,8 +37,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
   <modules>
@@ -52,12 +52,12 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-resources-plugin</artifactId>
-          <version>2.7</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>2.0.2</version>
+          <version>3.10.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/pom.xml b/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/pom.xml
index bdb977a..cb0b7d1 100644
--- a/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6566-execute-annotation-should-not-re-execute-goals/plugin/pom.xml
@@ -30,8 +30,8 @@
 
   <properties>
     <maven-version>3.6.0</maven-version>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-6656-buildconsumer/expected/simple-webapp.pom b/core-it-suite/src/test/resources/mng-6656-buildconsumer/expected/simple-webapp.pom
index c7977a6..1ecae6d 100644
--- a/core-it-suite/src/test/resources/mng-6656-buildconsumer/expected/simple-webapp.pom
+++ b/core-it-suite/src/test/resources/mng-6656-buildconsumer/expected/simple-webapp.pom
@@ -43,7 +43,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
-          <version>2.6</version>
+          <version>3.3.2</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-webapp/pom.xml b/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-webapp/pom.xml
index 776d54d..a1ac951 100644
--- a/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-webapp/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6656-buildconsumer/simple-parent/simple-webapp/pom.xml
@@ -43,7 +43,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
-          <version>2.6</version>
+          <version>3.3.2</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/pom.xml b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/pom.xml
index ed05aa3..9faeb73 100644
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-1/pom.xml
@@ -37,20 +37,13 @@
   </dependencies>
 
   <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <version>3.3.0</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.22.0</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>3.0.0-M7</version>
+      </plugin>
+    </plugins>
   </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/pom.xml b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/pom.xml
index 53dbc6d..483ac75 100644
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-2/pom.xml
@@ -37,20 +37,13 @@
   </dependencies>
 
   <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <version>3.3.0</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.22.0</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>3.0.0-M7</version>
+      </plugin>
+    </plugins>
   </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/pom.xml b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/pom.xml
index 9636190..6eb9d78 100644
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/module-3/pom.xml
@@ -42,20 +42,13 @@
   </dependencies>
 
   <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <version>3.3.0</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.22.0</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>3.0.0-M7</version>
+      </plugin>
+    </plugins>
   </build>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6720-fail-fast/pom.xml b/core-it-suite/src/test/resources/mng-6720-fail-fast/pom.xml
index 2ca2743..6f71a65 100644
--- a/core-it-suite/src/test/resources/mng-6720-fail-fast/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6720-fail-fast/pom.xml
@@ -35,4 +35,15 @@
     <module>module-3</module>
   </modules>
 
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>3.3.0</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/pom.xml b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/pom.xml
index cdab5b6..ff1562d 100644
--- a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-a/pom.xml
@@ -42,7 +42,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/pom.xml b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/pom.xml
index 428eaeb..69cb4b2 100644
--- a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/child-b/pom.xml
@@ -42,7 +42,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.0</version>
+        <version>3.0.0-M7</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/pom.xml b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/pom.xml
index e3bb3b8..fcbb78d 100644
--- a/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6754-version-timestamp-in-multimodule-build/pom.xml
@@ -37,8 +37,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
         <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
         <timestamp>${maven.build.timestamp}</timestamp>
     </properties>
diff --git a/core-it-suite/src/test/resources/mng-6957-buildconsumer/expected/simple-webapp.pom b/core-it-suite/src/test/resources/mng-6957-buildconsumer/expected/simple-webapp.pom
index edde31a..a422ba0 100644
--- a/core-it-suite/src/test/resources/mng-6957-buildconsumer/expected/simple-webapp.pom
+++ b/core-it-suite/src/test/resources/mng-6957-buildconsumer/expected/simple-webapp.pom
@@ -43,7 +43,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
-          <version>2.6</version>
+          <version>3.3.2</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-webapp/pom.xml b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-webapp/pom.xml
index b1068b7..cc92c4b 100644
--- a/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-webapp/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6957-buildconsumer/simple-parent/simple-webapp/pom.xml
@@ -43,7 +43,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
-          <version>2.6</version>
+          <version>3.3.2</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/pom.xml b/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/pom.xml
index 72191b7..501e6c7 100644
--- a/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6972-allow-access-to-graph-package/build-plugin/pom.xml
@@ -28,11 +28,11 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
 
     <plexus-component.version>1.5.5</plexus-component.version>
-    <maven-version>3.3.1</maven-version>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/pom.xml b/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/pom.xml
index 09e643f..0d23baf 100644
--- a/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/pom.xml
+++ b/core-it-suite/src/test/resources/mng-6981-pl-should-include-children/pom.xml
@@ -37,8 +37,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
 
     <modules>
diff --git a/core-it-suite/src/test/resources/mng-7045/pom.xml b/core-it-suite/src/test/resources/mng-7045/pom.xml
index 7a5b7c7..1b80c69 100644
--- a/core-it-suite/src/test/resources/mng-7045/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7045/pom.xml
@@ -23,7 +23,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.8.1</version>
+        <version>3.10.1</version>
         <configuration>
           <source>1.7</source>
           <target>1.7</target>
diff --git a/core-it-suite/src/test/resources/mng-7128-block-external-http-reactor/pom.xml b/core-it-suite/src/test/resources/mng-7128-block-external-http-reactor/pom.xml
index f69a336..b0eb756 100644
--- a/core-it-suite/src/test/resources/mng-7128-block-external-http-reactor/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7128-block-external-http-reactor/pom.xml
@@ -23,7 +23,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.8.1</version>
+        <version>3.10.1</version>
         <configuration>
           <source>1.7</source>
           <target>1.7</target>
diff --git a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/pom.xml b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/pom.xml
index 41ebd3c..555a103 100644
--- a/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7160-extensionclassloader/extension/pom.xml
@@ -32,7 +32,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.3.1</version>
+      <version>3.8.6</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml
index 5e8d49b..c511291 100644
--- a/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7310-lifecycle-activated-in-specified-module/project/pom.xml
@@ -39,4 +39,25 @@
     <module>other-module</module>
   </modules>
 
+  <build>
+    <pluginManagement><!-- see bootstrap for plugins versions -->
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-assembly-plugin</artifactId>
+          <version>3.4.0</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>3.3.0</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.10.1</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/pom.xml b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/pom.xml
index 3ff0e85..3ca74c5 100644
--- a/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7335-missing-jar-in-parallel-build/pom.xml
@@ -10,8 +10,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
 
     <modules>
@@ -57,18 +57,6 @@
     </modules>
     <packaging>pom</packaging>
 
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <version>3.2.0</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-
     <dependencies>
         <dependency>
             <groupId>commons-lang</groupId>
@@ -77,4 +65,21 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>3.3.0</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>3.2.0</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep-dep/pom.xml
index a1107d5..e6c90c7 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep-dep/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep/pom.xml
index 871fc3d..c96ed25 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-dep/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin-dep/pom.xml
index b58258b..ff6c590 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin-dep/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/pom.xml
index cc5abe9..b9971e7 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/new-plugin/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
@@ -45,7 +45,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-plugin-plugin</artifactId>
-        <version>3.3</version>
+        <version>3.6.4</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep-dep/pom.xml
index a8b9d35..02c6096 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep-dep/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <distributionManagement>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep/pom.xml
index c47fa1a..766b9fd 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-dep/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <distributionManagement>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin-dep/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin-dep/pom.xml
index 4362075..9ab2f5e 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin-dep/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin-dep/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <distributionManagement>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/pom.xml
index 33cca50..3bc7ae4 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/old-plugin/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <distributionManagement>
@@ -48,7 +48,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-plugin-plugin</artifactId>
-        <version>3.3</version>
+        <version>3.6.4</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/pom.xml
index eb13a5b..7b9bd61 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/artifacts/pom.xml
@@ -9,9 +9,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <modules>
diff --git a/core-it-suite/src/test/resources/mng-7349-relocation-warning/project/pom.xml b/core-it-suite/src/test/resources/mng-7349-relocation-warning/project/pom.xml
index fe9b0e1..3a56cfb 100644
--- a/core-it-suite/src/test/resources/mng-7349-relocation-warning/project/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7349-relocation-warning/project/pom.xml
@@ -9,8 +9,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
   <dependencies>
diff --git a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/pom.xml b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/pom.xml
index 1e9a154..e8b6829 100644
--- a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd-no-dotmvn/pom.xml
@@ -36,8 +36,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
   <modules>
diff --git a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/pom.xml b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/pom.xml
index ea34c31..0d4407a 100644
--- a/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7390-pl-outside-cwd/pom.xml
@@ -36,8 +36,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
   <modules>
diff --git a/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/pom.xml b/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/pom.xml
index f37a47a..c3846c7 100644
--- a/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7474-session-scope/plugin/pom.xml
@@ -7,8 +7,8 @@
     <packaging>maven-plugin</packaging>
 
     <properties>
-        <maven.compiler.source>1.7</maven.compiler.source>
-        <maven.compiler.target>1.7</maven.compiler.target>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
         <maven-version>3.2.5</maven-version>
     </properties>
 
diff --git a/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/pom.xml b/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/pom.xml
index 0166761..9bb14e3 100644
--- a/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7487-deadlock/consumer/pom.xml
@@ -52,8 +52,8 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
 
 </project>
diff --git a/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/pom.xml b/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/pom.xml
index 5789a3e..cc59e64 100644
--- a/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7487-deadlock/plugin/pom.xml
@@ -29,9 +29,9 @@
   <packaging>maven-plugin</packaging>
 
   <properties>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-    <maven-version>3.1.1</maven-version>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven-version>3.8.6</maven-version>
   </properties>
 
   <dependencies>
@@ -60,7 +60,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-plugin-plugin</artifactId>
-        <version>3.3</version>
+        <version>3.6.4</version>
       </plugin>
     </plugins>
   </build>
diff --git a/core-it-suite/src/test/resources/mng-7606/pom.xml b/core-it-suite/src/test/resources/mng-7606/pom.xml
index 9491e23..502bd53 100644
--- a/core-it-suite/src/test/resources/mng-7606/pom.xml
+++ b/core-it-suite/src/test/resources/mng-7606/pom.xml
@@ -34,7 +34,7 @@
             <dependency>
                 <groupId>org.apache.maven</groupId>
                 <artifactId>maven-core</artifactId>
-                <version>3.3.1</version>
+                <version>3.8.6</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
diff --git a/core-it-support/core-it-javaagent/pom.xml b/core-it-support/core-it-javaagent/pom.xml
index 3f852f6..58802bd 100644
--- a/core-it-support/core-it-javaagent/pom.xml
+++ b/core-it-support/core-it-javaagent/pom.xml
@@ -27,9 +27,8 @@
     <artifactId>core-it-support</artifactId>
     <version>2.1-SNAPSHOT</version>
   </parent>
-  <groupId>mng-coreit</groupId>
-  <artifactId>javaagent</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <artifactId>core-it-javaagent</artifactId>
+  <version>2.1-SNAPSHOT</version>
 
   <build>
     <plugins>
@@ -48,6 +47,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
+        <version>3.4.1</version>
         <executions>
           <execution>
             <goals>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/pom.xml
index b9d3d9b..e8e0913 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/pom.xml
@@ -45,7 +45,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckMojo.java
index 6b6907f..dbc0e2c 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckMojo.java
@@ -22,6 +22,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -35,42 +39,35 @@
 /**
  * Checks the general retrieval of components from active component collections.
  *
- * @goal check
- * @phase validate
- *
  * @author Benjamin Bentmann
  */
+@Mojo( name = "check", defaultPhase = LifecyclePhase.VALIDATE )
 public class CheckMojo
     extends AbstractMojo
 {
 
     /**
      * Project base directory used for manual path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The available components, as a map.
-     *
-     * @component role="org.apache.maven.plugin.coreit.Component"
      */
-    private Map componentMap;
+    @Component
+    private Map<String, TestComponent> componentMap;
 
     /**
      * The available components, as a list.
-     *
-     * @component role="org.apache.maven.plugin.coreit.Component"
      */
-    private List componentList;
+    @Component
+    private List<TestComponent> componentList;
 
     /**
      * The path to the properties file to create.
-     *
-     * @parameter property="collections.outputFile"
      */
+    @Parameter( property = "clsldr.pluginClassLoaderOutput" )
     private File outputFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java
index f9851c4..29122de 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java
@@ -21,6 +21,10 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -35,40 +39,34 @@
  * Checks the thread-safe retrieval of components from active component collections.
  *
  * @author Benjamin Bentmann
- * @goal check-thread-safety
- * @phase validate
- */
+  */
+@Mojo( name = "check-thread-safety", defaultPhase = LifecyclePhase.VALIDATE )
 public class CheckThreadSafetyMojo
     extends AbstractMojo
 {
 
     /**
      * Project base directory used for manual path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The available components, as a map.
-     *
-     * @component role="org.apache.maven.plugin.coreit.Component"
      */
-    private Map componentMap;
+    @Component
+    private Map<String, TestComponent> componentMap;
 
     /**
      * The available components, as a list.
-     *
-     * @component role="org.apache.maven.plugin.coreit.Component"
      */
-    private List componentList;
+    @Component
+    private List<TestComponent> componentList;
 
     /**
      * The path to the properties file to create.
-     *
-     * @parameter property="collections.outputFile"
      */
+    @Parameter( property = "collections.outputFile" )
     private File outputFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DefaultComponent.java b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DefaultTestComponent.java
similarity index 93%
rename from core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DefaultComponent.java
rename to core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DefaultTestComponent.java
index e218dc4..bd10925 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DefaultComponent.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DefaultTestComponent.java
@@ -24,8 +24,8 @@
  *
  * @author Benjamin Bentmann
  */
-public class DefaultComponent
-    implements Component
+public class DefaultTestComponent
+        implements TestComponent
 {
 
 }
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DumpRepoLayoutsMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DumpRepoLayoutsMojo.java
index 6750a82..f27d6c3 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DumpRepoLayoutsMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/DumpRepoLayoutsMojo.java
@@ -19,9 +19,14 @@
  * under the License.
  */
 
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -35,40 +40,34 @@
  * Dumps the role hints of the available repository layouts to a properties file.
  *
  * @author Benjamin Bentmann
- * @goal dump-repo-layouts
- * @phase validate
- */
+  */
+@Mojo( name = "dump-repo-layouts", defaultPhase = LifecyclePhase.VALIDATE )
 public class DumpRepoLayoutsMojo
     extends AbstractMojo
 {
 
     /**
      * Project base directory used for manual path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The available repository layouts, as a map.
-     *
-     * @component role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout"
      */
-    private Map repositoryLayouts;
+    @Component
+    private Map<String, ArtifactRepositoryLayout> repositoryLayouts;
 
     /**
      * The available repository layouts, as a list.
-     *
-     * @component role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout"
      */
-    private List repoLayouts;
+    @Component
+    private List<ArtifactRepositoryLayout> repoLayouts;
 
     /**
      * The path to the properties file used to dump the repository layouts.
-     *
-     * @parameter property="collections.layoutsFile"
      */
+    @Parameter( property = "collections.layoutsFile" )
     private File layoutsFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/Component.java b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
similarity index 96%
rename from core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/Component.java
rename to core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
index 70f6904..6adc9a4 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/Component.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
@@ -24,7 +24,7 @@
  *
  * @author Benjamin Bentmann
  */
-public interface Component
+public interface TestComponent
 {
 
 }
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/resources/META-INF/plexus/components.xml b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/resources/META-INF/plexus/components.xml
index d50cb02..ac21bb4 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/resources/META-INF/plexus/components.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/resources/META-INF/plexus/components.xml
@@ -22,15 +22,15 @@
 <component-set>
   <components>
     <component>
-      <role>org.apache.maven.plugin.coreit.Component</role>
+      <role>org.apache.maven.plugin.coreit.TestComponent</role>
       <role-hint>stateless</role-hint>
-      <implementation>org.apache.maven.plugin.coreit.DefaultComponent</implementation>
+      <implementation>org.apache.maven.plugin.coreit.DefaultTestComponent</implementation>
       <instantiation-strategy>singleton</instantiation-strategy>
     </component>
     <component>
-      <role>org.apache.maven.plugin.coreit.Component</role>
+      <role>org.apache.maven.plugin.coreit.TestComponent</role>
       <role-hint>stateful</role-hint>
-      <implementation>org.apache.maven.plugin.coreit.DefaultComponent</implementation>
+      <implementation>org.apache.maven.plugin.coreit.DefaultTestComponent</implementation>
       <instantiation-strategy>per-lookup</instantiation-strategy>
     </component>
   </components>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-all/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-all/pom.xml
index d567b26..a22965f 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-all/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-all/pom.xml
@@ -42,7 +42,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-all/src/main/java/org/apache/maven/plugin/coreit/AggregatorDependenciesMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-all/src/main/java/org/apache/maven/plugin/coreit/AggregatorDependenciesMojo.java
index 20747be..c26b526 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-all/src/main/java/org/apache/maven/plugin/coreit/AggregatorDependenciesMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-all/src/main/java/org/apache/maven/plugin/coreit/AggregatorDependenciesMojo.java
@@ -24,22 +24,23 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
- * @requiresDependencyResolution test
- * @aggregator
- * @goal aggregator-dependencies
- * @phase validate
  */
+@Mojo( name = "aggregator-dependencies", defaultPhase = LifecyclePhase.VALIDATE,
+       requiresDependencyResolution = ResolutionScope.TEST, aggregator = true )
 public class AggregatorDependenciesMojo
     extends AbstractMojo
 {
 
     /**
      * The path to the touch file, relative to the project's base directory.
-     *
-     * @parameter property="aggregator.touchFile" default-value="${project.build.directory}/touch.txt"
      */
+    @Parameter( property = "aggregator.touchFile", defaultValue = "${project.build.directory}/touch.txt" )
     private File touchFile;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-ant-based/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-ant-based/pom.xml
index aa1aa82..0fef117 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-ant-based/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-ant-based/pom.xml
@@ -105,6 +105,9 @@
         <configuration>
           <!-- NOTE: We use a handwritten descriptor to decouple from MPLUGIN-136/MNG-3741 so dump the generated one -->
           <outputDirectory>${project.build.directory}</outputDirectory>
+          <extractors>
+            <extractor>ant</extractor>
+          </extractors>
         </configuration>
       </plugin>
     </plugins>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-ant-based/src/main/resources/META-INF/maven/plugin.xml b/core-it-support/core-it-plugins/maven-it-plugin-ant-based/src/main/resources/META-INF/maven/plugin.xml
index 26b12aa..5f6725e 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-ant-based/src/main/resources/META-INF/maven/plugin.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-ant-based/src/main/resources/META-INF/maven/plugin.xml
@@ -66,8 +66,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <type>jar</type>
-      <version>2.0.6</version>
+      <version>3.8.6</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-artifact/pom.xml
index ad4d1b2..f688266 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/pom.xml
@@ -47,32 +47,31 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-model</artifactId>
-      <version>2.0</version>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-compat</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-repository-metadata</artifactId>
-      <version>2.0</version>
-      <scope>provided</scope>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AbstractRepoMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AbstractRepoMojo.java
index a04fa38..12d26bb 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AbstractRepoMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AbstractRepoMojo.java
@@ -22,6 +22,7 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.util.Collection;
@@ -38,47 +39,32 @@
 
     /**
      * The project's main artifact.
-     *
-     * @parameter default-value="${project.artifact}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project.artifact}", required = true, readonly = true )
     protected Artifact mainArtifact;
 
     /**
      * The project's attached artifact.
-     *
-     * @parameter default-value="${project.attachedArtifacts}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project.attachedArtifacts}", required = true, readonly = true )
     protected Collection<Artifact> attachedArtifacts;
 
     /**
      * The packaging of the project.
-     *
-     * @parameter default-value="${project.packaging}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project.packaging}", required = true, readonly = true )
     protected String packaging;
 
     /**
      * The POM file of the project.
-     *
-     * @parameter default-value="${project.file}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project.file}", required = true, readonly = true )
     protected File pomFile;
 
     /**
      * The local repository.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${localRepository}", required = true, readonly = true )
     protected ArtifactRepository localRepository;
 
     protected boolean isPomArtifact()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AttachMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AttachMojo.java
index 6e18632..3a27f8a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AttachMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AttachMojo.java
@@ -22,6 +22,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 
@@ -30,53 +34,45 @@
 /**
  * Attaches a secondary artifact to the current project. This mimics source/javadoc attachments or other assemblies.
  *
- * @goal attach
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "attach", defaultPhase = LifecyclePhase.PACKAGE )
 public class AttachMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project}", readonly = true, required = true )
     private MavenProject project;
 
     /**
      * The Maven project helper.
      *
-     * @component
      */
+    @Component
     private MavenProjectHelper helper;
 
     /**
      * The path to the file to attach, relative to the project base directory. The plugin will not validate this path.
-     *
-     * @parameter property="artifact.attachedFile"
-     * @required
      */
+    @Parameter( property = "artifact.attachedFile", required = true )
     private String attachedFile;
 
     /**
      * The type of the artifact to attach.
-     *
-     * @parameter property="artifact.artifactType"
      */
+    @Parameter( property = "artifact.artifactType" )
     private String artifactType;
 
     /**
      * The classifier for the attached artifact. If unspecified, the default classifier for the specified artifact type
      * is used.
-     *
-     * @parameter property="artifact.artifactClassifier"
      */
+    @Parameter( property = "artifact.artifactClassifier" )
     private String artifactClassifier;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AttachPomMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AttachPomMojo.java
index 58b92b5..c16aa21 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AttachPomMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/AttachPomMojo.java
@@ -23,6 +23,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.artifact.ProjectArtifactMetadata;
 
@@ -31,32 +34,26 @@
 /**
  * Attaches a POM to the main artifact.
  *
- * @goal attach-pom
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "attach-pom", defaultPhase = LifecyclePhase.PACKAGE )
 public class AttachPomMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the POM file to attach to the main artifact, relative to the project base directory. The plugin will
      * not validate this path.
-     *
-     * @parameter property="artifact.pomFile" default-value="${project.file.path}"
-     * @required
      */
+    @Parameter( property = "artifact.pomFile", defaultValue = "${project.file.path}", required = true )
     private String pomFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/CollectMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/CollectMojo.java
index 54d3315..4570c6d 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/CollectMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/CollectMojo.java
@@ -28,6 +28,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.util.Collections;
 import java.util.LinkedHashSet;
@@ -39,56 +42,50 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal collect
- */
+  */
+@Mojo( name = "collect" )
 public class CollectMojo
     extends AbstractMojo
 {
 
     /**
      * The local repository.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
     private ArtifactRepository localRepository;
 
     /**
      * The remote repositories of the current Maven project.
-     *
-     * @parameter default-value="${project.remoteArtifactRepositories}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project.remoteArtifactRepositories}", readonly = true, required = true )
     private List remoteRepositories;
 
     /**
      * The artifact collector.
      *
-     * @component
      */
+    @Component
     private ArtifactCollector collector;
 
     /**
      * The artifact factory.
      *
-     * @component
      */
+    @Component
     private ArtifactFactory factory;
 
     /**
      * The metadata source.
      *
-     * @component
      */
+    @Component
     private ArtifactMetadataSource metadataSource;
 
     /**
      * The dependencies to resolve.
      *
-     * @parameter
      */
+    @Parameter
     private Dependency[] dependencies;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/CustomRepositoryLayout.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/CustomRepositoryLayout.java
index a519741..b7db247 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/CustomRepositoryLayout.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/CustomRepositoryLayout.java
@@ -31,6 +31,11 @@
 public class CustomRepositoryLayout
     implements ArtifactRepositoryLayout
 {
+    @Override
+    public String getId()
+    {
+        return "id";
+    }
 
     public String pathOf( Artifact artifact )
     {
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/DeployFileMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/DeployFileMojo.java
index df1d064..075e7f9 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/DeployFileMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/DeployFileMojo.java
@@ -28,99 +28,90 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 
 /**
  * Deploys a user-supplied file to some repository. This mimics part of the Maven Deploy Plugin.
  *
- * @goal deploy-file
- * @requiresProject false
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "deploy-file", requiresProject = false )
 public class DeployFileMojo
     extends AbstractMojo
 {
 
     /**
      * The file of the artifact to deploy.
-     *
-     * @parameter property="file"
      */
+    @Parameter( property = "file" )
     private File file;
 
     /**
      * The group id of the artifact.
-     *
-     * @parameter property="groupId"
      */
+    @Parameter( property = "groupId" )
     private String groupId;
 
     /**
      * The artifact id of the artifact.
-     *
-     * @parameter property="artifactId"
      */
+    @Parameter( property = "artifactId" )
     private String artifactId;
 
     /**
      * The version of the artifact.
-     *
-     * @parameter property="version"
      */
+    @Parameter( property = "version" )
     private String version;
 
     /**
      * The URL of the repository to deploy to.
-     *
-     * @parameter property="repositoryUrl"
      */
+    @Parameter( property = "repositoryUrl" )
     private String repositoryUrl;
 
     /**
      * The ID of the repository to deploy to.
-     *
-     * @parameter property="repositoryId"
      */
+    @Parameter( property = "repositoryId" )
     private String repositoryId;
 
     /**
      * The repository factory.
      *
-     * @component
      */
+    @Component
     private ArtifactRepositoryFactory repositoryFactory;
 
     /**
      * The repository layout.
-     *
-     * @component roleHint="default"
      */
+    @Component( hint = "default" )
     private ArtifactRepositoryLayout repositoryLayout;
 
     /**
      * The artifact factory.
      *
-     * @component
      */
+    @Component
     private ArtifactFactory artifactFactory;
 
     /**
      * The artifact deployer.
      *
-     * @component
      */
+    @Component
     private ArtifactDeployer deployer;
 
     /**
      * The local repository.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
     private ArtifactRepository localRepository;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
index 44b24a4..43c50b2 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
@@ -23,33 +23,33 @@
 import org.apache.maven.artifact.deployer.ArtifactDeployer;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Deploys the project artifacts to the distribution repository. This is the essence of the Maven Deploy Plugin.
  *
  * @author Benjamin Bentmann
  *
- * @goal deploy
- * @phase deploy
- */
+  */
+@Mojo( name = "deploy", defaultPhase = LifecyclePhase.DEPLOY )
 public class DeployMojo
     extends AbstractRepoMojo
 {
 
     /**
      * The distribution repository.
-     *
-     * @parameter default-value="${project.distributionManagementArtifactRepository}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project.distributionManagementArtifactRepository}", readonly = true, required = true )
     private ArtifactRepository deploymentRepository;
 
     /**
      * The artifact deployer.
      *
-     * @component
      */
+    @Component
     private ArtifactDeployer deployer;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallArtifactsMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallArtifactsMojo.java
index 1f07910..117d480 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallArtifactsMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallArtifactsMojo.java
@@ -30,50 +30,50 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 import java.io.File;
 import java.util.List;
 
 /**
  * @author Olivier Lamy
- * @goal install-artifacts
- * @requiresDependencyResolution runtime
- * @phase package
  */
+@Mojo( name = "install-artifacts", requiresDependencyResolution = ResolutionScope.RUNTIME,
+       defaultPhase = LifecyclePhase.PACKAGE )
 public class InstallArtifactsMojo
     extends AbstractMojo
 {
 
     /**
-     * @readonly
-     * @parameter default-value="${project.runtimeArtifacts}"
      */
-    private List artifacts;
+    @Parameter( defaultValue = "${project.runtimeArtifacts}", readonly = true )
+    private List<Artifact> artifacts;
 
     /**
-     * @component
      */
+    @Component
     private ArtifactInstaller artifactInstaller;
 
     /**
-     * @component
      */
+    @Component
     private ArtifactRepositoryFactory artifactRepositoryFactory;
 
     /**
      * The directory that will be used to assemble the artifacts in
      * and place the bin scripts.
-     *
-     * @required
-     * @parameter property="assembleDirectory" default-value="${project.build.directory}/appassembler"
      */
+    @Parameter( property = "assembleDirectory", defaultValue = "${project.build.directory}/appassembler" )
     private File assembleDirectory;
 
     /**
      * Path (relative to assembleDirectory) of the desired output repository.
-     *
-     * @parameter default-value="repo"
      */
+    @Parameter( defaultValue = "repo" )
     private String repositoryName;
 
     public void execute()
@@ -86,10 +86,8 @@
         ArtifactRepository artifactRepository =
             artifactRepositoryFactory.createDeploymentArtifactRepository( "appassembler", "file://"
                 + assembleDirectory.getAbsolutePath() + "/" + repositoryName, artifactRepositoryLayout, false );
-        for ( Object artifact1 : artifacts )
+        for ( Artifact artifact : artifacts )
         {
-            Artifact artifact = (Artifact) artifact1;
-
             installArtifact( artifactRepository, artifact );
         }
     }
@@ -123,6 +121,12 @@
 
         private static final char GROUP_SEPARATOR = '.';
 
+        @Override
+        public String getId()
+        {
+            return "id";
+        }
+
         public String pathOf( Artifact artifact )
         {
             ArtifactHandler artifactHandler = artifact.getArtifactHandler();
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallCustomMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallCustomMojo.java
index 2679197..6993bda 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallCustomMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallCustomMojo.java
@@ -23,29 +23,31 @@
 
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Installs the project artifacts into a local repository with a custom base directory and a custom layout.
  *
- * @goal install-custom
  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "install-custom" )
 public class InstallCustomMojo
     extends InstallMojo
 {
 
     /**
-     * @component
      */
+    @Component
     private ArtifactRepositoryFactory repositoryFactory;
 
     /**
      * The base directory of the local repository to install to.
-     *
-     * @parameter property="install.localRepoDir"
      */
+    @Parameter( property = "install.localRepoDir" )
     private File localRepoDir;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallMojo.java
index 150d2c3..fe13b8f 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/InstallMojo.java
@@ -22,24 +22,25 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.installer.ArtifactInstaller;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
  * Installs the project artifacts into the local repository. This is the essence of the Maven Install Plugin.
  *
  * @author Benjamin Bentmann
  *
- * @goal install
- * @phase install
- */
+  */
+@Mojo( name = "install", defaultPhase = LifecyclePhase.INSTALL )
 public class InstallMojo
     extends AbstractRepoMojo
 {
 
     /**
      * The artifact installer.
-     *
-     * @component
      */
+    @Component
     private ArtifactInstaller installer;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/LatestMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/LatestMojo.java
index dfdcc07..8ae85b9 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/LatestMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/LatestMojo.java
@@ -24,26 +24,25 @@
 import org.apache.maven.artifact.repository.metadata.Versioning;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Marks the project's artifact as the latest version.
  *
- * @goal latest
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  */
+@Mojo( name = "latest", defaultPhase = LifecyclePhase.PACKAGE )
 public class LatestMojo
     extends AbstractMojo
 {
 
     /**
      * The main project artifact.
-     *
-     * @parameter default-value="${project.artifact}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project.artifact}", readonly = true, required = true )
     private Artifact projectArtifact;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ReleaseMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ReleaseMojo.java
index b0545b7..041f8c9 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ReleaseMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ReleaseMojo.java
@@ -23,28 +23,27 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 /**
  * Marks the project's artifact as a release.
  *
- * @goal release
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "release", defaultPhase = LifecyclePhase.PACKAGE )
 public class ReleaseMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project}", readonly = true, required = true )
     private MavenProject project;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ResolveMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ResolveMojo.java
index 30ce809..1118fb1 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ResolveMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ResolveMojo.java
@@ -26,6 +26,9 @@
 import org.apache.maven.model.Dependency;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -38,56 +41,50 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal resolve
- */
+  */
+@Mojo( name = "resolve" )
 public class ResolveMojo
     extends AbstractMojo
 {
 
     /**
      * The local repository.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
     private ArtifactRepository localRepository;
 
     /**
      * The remote repositories of the current Maven project.
-     *
-     * @parameter default-value="${project.remoteArtifactRepositories}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project.remoteArtifactRepositories}", readonly = true, required = true )
     private List remoteRepositories;
 
     /**
      * The artifact resolver.
      *
-     * @component
      */
+    @Component
     private ArtifactResolver resolver;
 
     /**
      * The artifact factory.
      *
-     * @component
      */
+    @Component
     private ArtifactFactory factory;
 
     /**
      * The dependencies to resolve.
      *
-     * @parameter
      */
+    @Parameter
     private Dependency[] dependencies;
 
     /**
      * The path to a properties file to store the resolved artifact paths in.
      *
-     * @parameter
      */
+    @Parameter
     private File propertiesFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ResolveTransitiveMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ResolveTransitiveMojo.java
index dd1b1d1..06a61f5 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ResolveTransitiveMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/ResolveTransitiveMojo.java
@@ -27,6 +27,9 @@
 import org.apache.maven.model.Dependency;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -41,63 +44,57 @@
  * to test access to any shared session state.
  *
  * @author Benjamin Bentmann
- * @goal resolve-transitive
- */
+  */
+@Mojo( name = "resolve-transitive" )
 public class ResolveTransitiveMojo
     extends AbstractMojo
 {
 
     /**
      * The local repository.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
     private ArtifactRepository localRepository;
 
     /**
      * The remote repositories of the current Maven project.
-     *
-     * @parameter default-value="${project.remoteArtifactRepositories}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project.remoteArtifactRepositories}", readonly = true, required = true )
     private List remoteRepositories;
 
     /**
      * The artifact resolver.
      *
-     * @component
      */
+    @Component
     private ArtifactResolver resolver;
 
     /**
      * The artifact factory.
      *
-     * @component
      */
+    @Component
     private ArtifactFactory factory;
 
     /**
      * The metadata source.
      *
-     * @component
      */
+    @Component
     private ArtifactMetadataSource metadataSource;
 
     /**
      * The dependencies to resolve.
      *
-     * @parameter
      */
+    @Parameter
     private Dependency[] dependencies;
 
     /**
      * The path to a properties file to store the resolved artifact paths in.
      *
-     * @parameter
      */
+    @Parameter
     private File propertiesFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/SetMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/SetMojo.java
index c166f0c..f44de09 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/SetMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-artifact/src/main/java/org/apache/maven/plugin/coreit/SetMojo.java
@@ -23,6 +23,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -31,32 +34,26 @@
  * Sets the main artifact's file. This is the essence of the Maven JAR Plugin and all the other packaging plugins.
  * Creating the actual file for the main artifact is a specific plugin job and not related to the Maven core.
  *
- * @goal set
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "set", defaultPhase = LifecyclePhase.PACKAGE )
 public class SetMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${project}", readonly = true, required = true )
     private MavenProject project;
 
     /**
      * The path to the file to set as the main artifact, relative to the project base directory. The plugin will not
      * validate this path.
-     *
-     * @parameter property="artifact.mainFile"
-     * @required
      */
+    @Parameter( property = "artifact.mainFile", required = true )
     private String mainFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/pom.xml
index 1a1db0c..ed6c2c4 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/pom.xml
@@ -22,14 +22,19 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <parent>
-    <groupId>org.apache.maven.its.plugins</groupId>
-    <artifactId>maven-it-plugins</artifactId>
-    <version>2.1-SNAPSHOT</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
 
+<!-- We can't use the parent which has managed dependencies
+    which make the tests using this plugin to fail -->
+<!--  <parent>-->
+<!--    <groupId>org.apache.maven.its.plugins</groupId>-->
+<!--    <artifactId>maven-it-plugins</artifactId>-->
+<!--    <version>2.1-SNAPSHOT</version>-->
+<!--    <relativePath>../../pom.xml</relativePath>-->
+<!--  </parent>-->
+
+  <groupId>org.apache.maven.its.plugins</groupId>
   <artifactId>maven-it-plugin-class-loader</artifactId>
+  <version>2.1-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
   <name>Maven IT Plugin :: Class Loader</name>
@@ -43,12 +48,19 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>3.8.6</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>3.6.4</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter</artifactId>
+      <version>5.8.0</version>
       <scope>test</scope>
     </dependency>
     <!-- dedicated IT artifact that is surely not shadowed by the Maven core -->
@@ -66,4 +78,18 @@
       <optional>true</optional>
     </dependency>
   </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.10.1</version>
+        <configuration>
+          <source>1.8</source>
+          <target>1.8</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/AbstractLoadMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/AbstractLoadMojo.java
index 7d0d5c6..ee3a0ee 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/AbstractLoadMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/AbstractLoadMojo.java
@@ -21,6 +21,7 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.IOException;
@@ -49,9 +50,8 @@
      * key will be the hash code of the requested class. In addition, a key named <code>QCN.methods</code> holds the
      * comma separated list of all public methods declared directly in that class, in alphabetic order and possibly with
      * duplicates to account for overloaded methods.
-     *
-     * @parameter property="clsldr.classNames"
      */
+    @Parameter( property = "clsldr.classNames" )
     protected String classNames;
 
     /**
@@ -59,9 +59,8 @@
      * successfully loaded, the generated properties files will contain a key named <code>ARP</code> whose value gives
      * the URL to the resource. In addition, the keys <code>ARP.count</code>, <code>ARP.0</code>, <code>ARP.1</code>
      * etc. will enumerate all URLs matching the resource name.
-     *
-     * @parameter property="clsldr.resourcePaths"
      */
+    @Parameter( property = "clsldr.resourcePaths" )
     protected String resourcePaths;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/AssignmentCompatibleMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/AssignmentCompatibleMojo.java
index c11f18b..cdf85eb 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/AssignmentCompatibleMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/AssignmentCompatibleMojo.java
@@ -22,6 +22,8 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.Mojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.util.Properties;
@@ -31,25 +33,23 @@
  * class loader. In other words, checks that types shared with the core realm are imported into the plugin realm.
  *
  * @author Benjamin Bentmann
- * @goal assignment-compatible
- * @phase initialize
- */
+  */
+@org.apache.maven.plugins.annotations.Mojo( name = "assignment-compatible", defaultPhase = LifecyclePhase.INITIALIZE )
 public class AssignmentCompatibleMojo
     extends AbstractMojo
 {
 
     /**
      * The path to the properties file used to track the results of the assignment compatibility tests.
-     *
-     * @parameter property="clsldr.assigncompatPropertiesFile"
      */
+    @Parameter( property = "clsldr.assigncompatPropertiesFile" )
     private File assigncompatPropertiesFile;
 
     /**
      * The qualified names of the types to check.
      *
-     * @parameter
      */
+    @Parameter
     private String[] classNames;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/Component.java b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/Component.java
deleted file mode 100644
index 70f6904..0000000
--- a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/Component.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.apache.maven.plugin.coreit;
-
-/*
- * 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.
- */
-
-/**
- * A simple interface for our test components.
- *
- * @author Benjamin Bentmann
- */
-public interface Component
-{
-
-}
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/InstanceofMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/InstanceofMojo.java
index 0874853..3900bb6 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/InstanceofMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/InstanceofMojo.java
@@ -22,6 +22,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.util.HashMap;
@@ -35,48 +39,41 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal instanceof
- * @phase initialize
- */
+  */
+@Mojo( name = "instanceof", defaultPhase = LifecyclePhase.INITIALIZE )
 public class InstanceofMojo
     extends AbstractMojo
 {
 
     /**
      * The path to the properties file used to track the results of the instanceof tests.
-     *
-     * @parameter property="clsldr.instanceofPropertiesFile"
      */
+    @Parameter( property = "clsldr.instanceofPropertiesFile" )
     private File instanceofPropertiesFile;
 
     /**
      * The qualified name of the type to which the objects should be assignment-compatible. This type will be loaded
      * from the plugin class loader, just like as if it was imported in the plugin source code.
-     *
-     * @parameter property="clsldr.className"
      */
+    @Parameter( property = "clsldr.className" )
     private String className;
 
     /**
      * A list of expressions that denote the object instances that should be type-checked.
-     *
-     * @parameter
      */
+    @Parameter
     private String[] objectExpressions;
 
     /**
      * A list of injected component instances that should be type-checked.
-     *
-     * @component role="org.apache.maven.plugin.coreit.Component"
      */
-    private List components;
+    @Component
+    private List<TestComponent> components;
 
     /**
      * The current Maven project against which expressions are evaluated.
-     *
-     * @parameter default-value="${project}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", readonly = true )
     private Object project;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/LoadDependenciesMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/LoadDependenciesMojo.java
index f15620e..4b33443 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/LoadDependenciesMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/LoadDependenciesMojo.java
@@ -20,6 +20,10 @@
  */
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 import java.io.File;
 import java.net.MalformedURLException;
@@ -31,31 +35,26 @@
  * Loads classes and/or resources from a custom class loader that holds the project dependencies and records the results
  * in a properties file.
  *
- * @goal load-dependencies
- * @phase initialize
- * @requiresDependencyResolution compile
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "load-dependencies", defaultPhase = LifecyclePhase.INITIALIZE,
+       requiresDependencyResolution = ResolutionScope.COMPILE )
 public class LoadDependenciesMojo
     extends AbstractLoadMojo
 {
 
     /**
      * The project's class path to load classes/resources from.
-     *
-     * @parameter default-value="${project.compileClasspathElements}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${project.compileClasspathElements}", readonly = true )
     private List classPath;
 
     /**
      * The path to the properties file used to track the results of the class/resource loading via the project class
      * loader.
-     *
-     * @parameter property="clsldr.projectClassLoaderOutput"
      */
+    @Parameter( property = "clsldr.projectClassLoaderOutput" )
     private File projectClassLoaderOutput;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/LoadMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/LoadMojo.java
index 7702a1c..2db4047 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/LoadMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/LoadMojo.java
@@ -20,18 +20,20 @@
  */
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 
 /**
  * Loads classes and/or resources from the plugin class path and records the results in a properties file.
  *
- * @goal load
- * @phase initialize
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "load", defaultPhase = LifecyclePhase.INITIALIZE )
 public class LoadMojo
     extends AbstractLoadMojo
 {
@@ -39,17 +41,15 @@
     /**
      * The path to the properties file used to track the results of the class/resource loading via the plugin class
      * loader.
-     *
-     * @parameter property="clsldr.pluginClassLoaderOutput"
      */
+    @Parameter( property = "clsldr.pluginClassLoaderOutput" )
     private File pluginClassLoaderOutput;
 
     /**
      * The path to the properties file used to track the results of the class/resource loading via the thread's context
      * class loader.
-     *
-     * @parameter property="clsldr.contextClassLoaderOutput"
      */
+    @Parameter( property = "clsldr.contextClassLoaderOutput" )
     private File contextClassLoaderOutput;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/Component.java b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
similarity index 96%
copy from core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/Component.java
copy to core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
index 70f6904..6adc9a4 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/Component.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-class-loader/maven-it-plugin-class-loader/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
@@ -24,7 +24,7 @@
  *
  * @author Benjamin Bentmann
  */
-public interface Component
+public interface TestComponent
 {
 
 }
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-configuration/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-configuration/pom.xml
index 3a929ba..455295a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-configuration/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-configuration/pom.xml
@@ -42,7 +42,6 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/AppendConfigMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/AppendConfigMojo.java
index 5754dd4..7e1873b 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/AppendConfigMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/AppendConfigMojo.java
@@ -27,98 +27,94 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Appends this mojo's configuration into a properties file.
  *
- * @goal append-config
- * @phase validate
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "append-config", defaultPhase = LifecyclePhase.VALIDATE )
 public class AppendConfigMojo
     extends AbstractMojo
 {
 
     /**
      * The current project's base directory, used for path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The path to the properties file into which to save the mojo configuration. <em>Note:</em> This intentionally uses
      * another parameter name for the output file than {@link ConfigMojo}.
-     *
-     * @parameter property="config.outputFile"
      */
+    @Parameter( property = "config.outputFile" )
     private File outputFile;
 
     /**
      * A parameter with a constant default value. <em>Note:</em> This has intentionally a different default value than
      * the equally named parameter from {@link ConfigMojo}.
-     *
-     * @parameter default-value="test"
      */
+    @Parameter( defaultValue = "test" )
     private String defaultParam;
 
     /**
      * A simple parameter of type {@link java.lang.String}.
-     *
-     * @parameter property="config.stringParam"
      */
+    @Parameter( property = "config.stringParam" )
     private String stringParam;
 
     /**
      * A simple parameter of type {@link java.io.File}.
-     *
-     * @parameter property="config.fileParam"
      */
+    @Parameter( property = "config.fileParam" )
     private File fileParam;
 
     /**
      * An array parameter of component type {@link java.lang.String}.
      *
-     * @parameter
      */
+    @Parameter
     private String[] stringParams;
 
     /**
      * An array parameter of component type {@link java.io.File}.
      *
-     * @parameter
      */
+    @Parameter
     private File[] fileParams;
 
     /**
      * A collection parameter of type {@link java.util.List}.
      *
-     * @parameter
      */
-    private List listParam;
+    @Parameter
+    private List<?> listParam;
 
     /**
      * A collection parameter of type {@link java.util.Set}.
      *
-     * @parameter
      */
-    private Set setParam;
+    @Parameter
+    private Set<?> setParam;
 
     /**
      * A collection parameter of type {@link java.util.Map}.
      *
-     * @parameter
      */
-    private Map mapParam;
+    @Parameter
+    private Map<?, ?> mapParam;
 
     /**
      * A collection parameter of type {@link java.util.Properties}.
      *
-     * @parameter
      */
+    @Parameter
     private Properties propertiesParam;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CliConfigMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CliConfigMojo.java
index 614f79b..807f017 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CliConfigMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CliConfigMojo.java
@@ -26,75 +26,68 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Dumps this mojo's configuration into a properties file.
  *
- * @goal cli-config
- * @phase validate
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "cli-config", defaultPhase = LifecyclePhase.VALIDATE )
 public class CliConfigMojo
     extends AbstractMojo
 {
 
     /**
      * The current project's base directory, used for path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The path to the properties file into which to save the mojo configuration.
-     *
-     * @parameter property="config.propertiesFile"
      */
+    @Parameter( property = "config.propertiesFile" )
     private File propertiesFile;
 
     /**
      * A simple parameter of type {@link java.lang.String}.
-     *
-     * @parameter property="config.stringParam"
      */
+    @Parameter( property = "config.stringParam" )
     private String stringParam;
 
     /**
      * A simple parameter of type {@link java.io.File}.
-     *
-     * @parameter property="config.fileParam"
      */
+    @Parameter( property = "config.fileParam" )
     private File fileParam;
 
     /**
      * An array parameter of component type {@link java.lang.String}.
-     *
-     * @parameter property="config.stringParams"
      */
+    @Parameter( property = "config.stringParams" )
     private String[] stringParams;
 
     /**
      * An array parameter of component type {@link java.io.File}.
-     *
-     * @parameter property="config.fileParams"
      */
+    @Parameter( property = "config.fileParams" )
     private File[] fileParams;
 
     /**
      * A collection parameter of type {@link java.util.List}.
-     *
-     * @parameter property="config.listParam"
      */
+    @Parameter( property = "config.listParam" )
     private List listParam;
 
     /**
      * A collection parameter of type {@link java.util.Set}.
-     *
-     * @parameter property="config.setParam"
      */
+    @Parameter( property = "config.setParam" )
     private Set setParam;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/ConfigMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/ConfigMojo.java
index 01f9d93..1d7ba48 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/ConfigMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/ConfigMojo.java
@@ -21,6 +21,9 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 
 import java.io.File;
@@ -37,222 +40,199 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal config
- * @phase validate
- */
+  */
+@Mojo( name = "config", defaultPhase = LifecyclePhase.VALIDATE )
 public class ConfigMojo
     extends AbstractMojo
 {
 
     /**
      * The current project's base directory, used for path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The path to the properties file into which to save the mojo configuration.
-     *
-     * @parameter property="config.propertiesFile"
      */
+    @Parameter( property = "config.propertiesFile" )
     private File propertiesFile;
 
     /**
      * A parameter with an alias.
-     *
-     * @parameter alias="aliasParamLegacy"
      */
+    @Parameter( alias = "aliasParamLegacy" )
     private String aliasParam;
 
     /**
      * A parameter with a constant default value.
-     *
-     * @parameter default-value="maven-core-it"
      */
+    @Parameter( defaultValue = "maven-core-it" )
     private String defaultParam;
 
     /**
      * A parameter with a default value using multiple expressions.
-     *
-     * @parameter default-value="${project.groupId}:${project.artifactId}:${project.version}"
      */
+    @Parameter( defaultValue = "${project.groupId}:${project.artifactId}:${project.version}" )
     private String defaultParamWithExpression;
 
     /**
      * A parameter that combines all of the annotations.
-     *
-     * @parameter alias="fullyAnnotatedParam" property="config.aliasDefaultExpressionParam" default-value="test"
      */
+    @Parameter( alias = "fullyAnnotatedParam", property = "config.aliasDefaultExpressionParam", defaultValue = "test" )
     private String aliasDefaultExpressionParam;
 
     /**
      * A simple parameter of type {@link java.lang.Boolean}.
-     *
-     * @parameter property="config.booleanParam"
      */
+    @Parameter( property = "config.booleanParam" )
     private Boolean booleanParam;
 
     /**
      * A simple parameter of type {@link java.lang.Boolean#TYPE}.
-     *
-     * @parameter property="config.primitiveBooleanParam"
      */
+    @Parameter( property = "config.primitiveBooleanParam" )
     private boolean primitiveBooleanParam;
 
     /**
      * A simple parameter of type {@link java.lang.Byte}.
-     *
-     * @parameter property="config.byteParam"
      */
+    @Parameter( property = "config.byteParam" )
     private Byte byteParam;
 
     /**
      * A simple parameter of type {@link java.lang.Short}.
-     *
-     * @parameter property="config.shortParam"
      */
+    @Parameter( property = "config.shortParam" )
     private Short shortParam;
 
     /**
      * A simple parameter of type {@link java.lang.Integer}.
-     *
-     * @parameter property="config.integerParam"
      */
+    @Parameter( property = "config.integerParam" )
     private Integer integerParam;
 
     /**
      * A simple parameter of type {@link java.lang.Integer#TYPE}.
-     *
-     * @parameter property="config.primitiveIntegerParam"
      */
+    @Parameter( property = "config.primitiveIntegerParam" )
     private int primitiveIntegerParam;
 
     /**
      * A simple parameter of type {@link java.lang.Long}.
-     *
-     * @parameter property="config.longParam"
      */
+    @Parameter( property = "config.longParam" )
     private Long longParam;
 
     /**
      * A simple parameter of type {@link java.lang.Float}.
-     *
-     * @parameter property="config.floatParam"
      */
+    @Parameter( property = "config.floatParam" )
     private Float floatParam;
 
     /**
      * A simple parameter of type {@link java.lang.Double}.
-     *
-     * @parameter property="config.doubleParam"
      */
+    @Parameter( property = "config.doubleParam" )
     private Double doubleParam;
 
     /**
      * A simple parameter of type {@link java.lang.Character}.
-     *
-     * @parameter property="config.characterParam"
      */
+    @Parameter( property = "config.characterParam" )
     private Character characterParam;
 
     /**
      * A simple parameter of type {@link java.lang.String}.
-     *
-     * @parameter property="config.stringParam"
      */
+    @Parameter( property = "config.stringParam" )
     private String stringParam;
 
     /**
      * A simple parameter of type {@link java.io.File}.
-     *
-     * @parameter property="config.fileParam"
      */
+    @Parameter( property = "config.fileParam" )
     private File fileParam;
 
     /**
      * A simple parameter of type {@link java.util.Date}.
-     *
-     * @parameter property="config.dateParam"
      */
+    @Parameter( property = "config.dateParam" )
     private Date dateParam;
 
     /**
      * A simple parameter of type {@link java.net.URL}.
-     *
-     * @parameter property="config.urlParam"
      */
+    @Parameter( property = "config.urlParam" )
     private URL urlParam;
 
     /**
      * A simple parameter of type {@link java.net.URI} (requires Maven 3.x).
      *
-     * @parameter
      */
+    @Parameter
     private URI uriParam;
 
     /**
      * An array parameter of component type {@link java.lang.String}.
      *
-     * @parameter
      */
+    @Parameter
     private String[] stringParams;
 
     /**
      * An array parameter of component type {@link java.io.File}.
      *
-     * @parameter
      */
+    @Parameter
     private File[] fileParams;
 
     /**
      * A collection parameter of type {@link java.util.List}.
      *
-     * @parameter
      */
+    @Parameter
     private List listParam;
 
     /**
      * A collection parameter of type {@link java.util.Set}.
      *
-     * @parameter
      */
+    @Parameter
     private Set setParam;
 
     /**
      * A collection parameter of type {@link java.util.Map}.
      *
-     * @parameter
      */
+    @Parameter
     private Map mapParam;
 
     /**
      * A collection parameter of type {@link java.util.Properties}.
      *
-     * @parameter
      */
+    @Parameter
     private Properties propertiesParam;
 
     /**
      * A complex parameter with an alias.
-     *
-     * @parameter alias="aliasStringParamsLegacy"
      */
+    @Parameter( alias = "aliasStringParamsLegacy" )
     private String[] aliasStringParams;
 
     /**
      * A complex parameter of type {@link org.apache.maven.plugin.coreit.Bean}.
      *
-     * @parameter
      */
+    @Parameter
     private Bean beanParam;
 
     /**
      * A raw DOM snippet.
      *
-     * @parameter
      */
+    @Parameter
     private PlexusConfiguration domParam;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CustomComponentConfigurator.java b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CustomComponentConfigurator.java
index 1d5a0e4..e433658 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CustomComponentConfigurator.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CustomComponentConfigurator.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.codehaus.classworlds.ClassRealm;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.configurator.AbstractComponentConfigurator;
 import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
@@ -47,7 +47,7 @@
     {
         ObjectWithFieldsConverter converter = new ObjectWithFieldsConverter();
 
-        converter.processConfiguration( converterLookup, component, containerRealm.getClassLoader(), configuration,
+        converter.processConfiguration( converterLookup, component, containerRealm, configuration,
                                         expressionEvaluator, listener );
 
         if ( component instanceof CustomConfigMojo )
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CustomConfigMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CustomConfigMojo.java
index bbff02f..82c1e82 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CustomConfigMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/CustomConfigMojo.java
@@ -27,105 +27,98 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Dumps this mojo's configuration into a properties file. Note that this mojo uses a custom component configurator.
  *
- * @goal custom-config
- * @phase validate
- * @configurator coreit
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "custom-config", defaultPhase = LifecyclePhase.VALIDATE, configurator = "coreit" )
 public class CustomConfigMojo
     extends AbstractMojo
 {
 
     /**
      * The current project's base directory, used for path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The path to the properties file into which to save the mojo configuration.
-     *
-     * @parameter property="config.propertiesFile"
      */
+    @Parameter( property = "config.propertiesFile" )
     private File propertiesFile;
 
     /**
      * A parameter being set only by the custom configurator as a proof of its execution.
-     *
-     * @parameter
      */
+    @Parameter
     String customParam;
 
     /**
      * A parameter with a constant default value. <em>Note:</em> This has intentionally a different default value than
      * the equally named parameter from {@link ConfigMojo}.
-     *
-     * @parameter default-value="test"
      */
+    @Parameter( defaultValue = "test" )
     private String defaultParam;
 
     /**
      * A simple parameter of type {@link java.lang.String}.
-     *
-     * @parameter property="config.stringParam"
      */
+    @Parameter( property = "config.stringParam" )
     private String stringParam;
 
     /**
      * A simple parameter of type {@link java.io.File}.
-     *
-     * @parameter property="config.fileParam"
      */
+    @Parameter( property = "config.fileParam" )
     private File fileParam;
 
     /**
      * An array parameter of component type {@link java.lang.String}.
      *
-     * @parameter
      */
+    @Parameter
     private String[] stringParams;
 
     /**
      * An array parameter of component type {@link java.io.File}.
      *
-     * @parameter
      */
+    @Parameter
     private File[] fileParams;
 
     /**
      * A collection parameter of type {@link java.util.List}.
      *
-     * @parameter
      */
+    @Parameter
     private List listParam;
 
     /**
      * A collection parameter of type {@link java.util.Set}.
      *
-     * @parameter
      */
+    @Parameter
     private Set setParam;
 
     /**
      * A collection parameter of type {@link java.util.Map}.
      *
-     * @parameter
      */
+    @Parameter
     private Map mapParam;
 
     /**
      * A collection parameter of type {@link java.util.Properties}.
      *
-     * @parameter
      */
+    @Parameter
     private Properties propertiesParam;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/RequiredConfigMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/RequiredConfigMojo.java
index 75ae9d6..5e48e14 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/RequiredConfigMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-configuration/src/main/java/org/apache/maven/plugin/coreit/RequiredConfigMojo.java
@@ -24,48 +24,43 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Dumps this mojo's configuration into a properties file.
  *
- * @goal required-config
- * @phase validate
- *
+  *
  * @author Benjamin Bentmann
  */
+@Mojo( name = "required-config", defaultPhase = LifecyclePhase.VALIDATE )
 public class RequiredConfigMojo
     extends AbstractMojo
 {
 
     /**
      * The current project's base directory, used for path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The path to the properties file into which to save the mojo configuration.
-     *
-     * @parameter property="config.propertiesFile"
      */
+    @Parameter( property = "config.propertiesFile" )
     private File propertiesFile;
 
     /**
      * A required parameter to be set via plugin configuration in POM or system property from CLI.
-     *
-     * @parameter property="config.requiredParam"
-     * @required
      */
+    @Parameter( property = "config.requiredParam", required = true )
     private String requiredParam;
 
     /**
      * A required parameter that defaults to a non-mandatory value from the POM.
-     *
-     * @parameter default-value="${project.url}"
-     * @required
      */
+    @Parameter( defaultValue = "${project.url}", required = true )
     private String requiredParamWithDefault;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-context-passing/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-context-passing/pom.xml
index 33c2921..f90f53a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-context-passing/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-context-passing/pom.xml
@@ -42,7 +42,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-context-passing/src/main/java/org/apache/maven/plugin/coreit/CatchMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-context-passing/src/main/java/org/apache/maven/plugin/coreit/CatchMojo.java
index 930873c..b1817b8 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-context-passing/src/main/java/org/apache/maven/plugin/coreit/CatchMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-context-passing/src/main/java/org/apache/maven/plugin/coreit/CatchMojo.java
@@ -21,6 +21,8 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -31,17 +33,15 @@
  * "Catch" a parameter "thrown" by the ThrowMojo through the plugin context, and
  * write a file based on it's value to the build output directory.
  *
- * @goal catch
  */
+@Mojo( name = "catch" )
 public class CatchMojo
     extends AbstractMojo
 {
 
     /**
-     * @parameter default-value="${project.build.directory}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project.build.directory}", readonly = true, required = true )
     private File outDir;
 
     public File getOutDir()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-context-passing/src/main/java/org/apache/maven/plugin/coreit/ThrowMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-context-passing/src/main/java/org/apache/maven/plugin/coreit/ThrowMojo.java
index 9b4ee8d..4ef764a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-context-passing/src/main/java/org/apache/maven/plugin/coreit/ThrowMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-context-passing/src/main/java/org/apache/maven/plugin/coreit/ThrowMojo.java
@@ -21,13 +21,15 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * "Throw" a parameter into the plugin context, for the "catch" mojo to
  * pick up and process.
  *
- * @goal throw
  */
+@Mojo( name = "throw" )
 public class ThrowMojo
     extends AbstractMojo
 {
@@ -35,8 +37,8 @@
     public static final String THROWN_PARAMETER = "throw-parameter";
 
     /**
-     * @parameter property="value" default-value="thrown"
      */
+    @Parameter( property = "value", defaultValue = "thrown" )
     private String value;
 
     public void setValue( String value )
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-clean-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-clean-plugin/pom.xml
index 459c49f..f73697d 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-clean-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-clean-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-clean-plugin/src/main/java/org/apache/maven/plugin/coreit/CleanMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-clean-plugin/src/main/java/org/apache/maven/plugin/coreit/CleanMojo.java
index 5bb83f5..aaf2d3e 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-clean-plugin/src/main/java/org/apache/maven/plugin/coreit/CleanMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-clean-plugin/src/main/java/org/apache/maven/plugin/coreit/CleanMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal clean
- * @phase clean
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "clean", defaultPhase = LifecyclePhase.CLEAN )
 public class CleanMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/clean-clean.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/pom.xml
index f4d5408..98a9a00 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
index 31d78fb..79e8e63 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal compile
- * @phase compile
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "compile", defaultPhase = LifecyclePhase.COMPILE )
 public class CompileMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/compiler-compile.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/coreit/TestCompileMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/coreit/TestCompileMojo.java
index c560a15..700322a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/coreit/TestCompileMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/coreit/TestCompileMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal testCompile
- * @phase test-compile
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "testCompile", defaultPhase = LifecyclePhase.TEST_COMPILE )
 public class TestCompileMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/compiler-test-compile.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-deploy-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-deploy-plugin/pom.xml
index f41efeb..5210978 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-deploy-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-deploy-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
index cedf3fc..6061ff2 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal deploy
- * @phase deploy
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "deploy", defaultPhase = LifecyclePhase.DEPLOY )
 public class DeployMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/deploy-deploy.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/pom.xml
index 5d7f6a4..2def806 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/src/main/java/org/apache/maven/plugin/coreit/EarMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/src/main/java/org/apache/maven/plugin/coreit/EarMojo.java
index 27f947e..e23658f 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/src/main/java/org/apache/maven/plugin/coreit/EarMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/src/main/java/org/apache/maven/plugin/coreit/EarMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal ear
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "ear", defaultPhase = LifecyclePhase.PACKAGE )
 public class EarMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/ear-ear.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/src/main/java/org/apache/maven/plugin/coreit/GenerateApplicationXmlMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/src/main/java/org/apache/maven/plugin/coreit/GenerateApplicationXmlMojo.java
index c8c0576..7916a99 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/src/main/java/org/apache/maven/plugin/coreit/GenerateApplicationXmlMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ear-plugin/src/main/java/org/apache/maven/plugin/coreit/GenerateApplicationXmlMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal generate-application-xml
- * @phase generate-resources
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "generate-application-xml", defaultPhase = LifecyclePhase.GENERATE_RESOURCES )
 public class GenerateApplicationXmlMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/ear-generate-application-xml.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ejb-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ejb-plugin/pom.xml
index cfeae4d..b51e9ab 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ejb-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ejb-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ejb-plugin/src/main/java/org/apache/maven/plugin/coreit/EjbMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ejb-plugin/src/main/java/org/apache/maven/plugin/coreit/EjbMojo.java
index fbef010..b7de2aa 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ejb-plugin/src/main/java/org/apache/maven/plugin/coreit/EjbMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-ejb-plugin/src/main/java/org/apache/maven/plugin/coreit/EjbMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal ejb
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "ejb", defaultPhase = LifecyclePhase.PACKAGE )
 public class EjbMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/ejb-ejb.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-install-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-install-plugin/pom.xml
index d1d88ea..17c1108 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-install-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-install-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-install-plugin/src/main/java/org/apache/maven/plugin/coreit/InstallMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-install-plugin/src/main/java/org/apache/maven/plugin/coreit/InstallMojo.java
index d56f7e1..5207da8 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-install-plugin/src/main/java/org/apache/maven/plugin/coreit/InstallMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-install-plugin/src/main/java/org/apache/maven/plugin/coreit/InstallMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal install
- * @phase install
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "install", defaultPhase = LifecyclePhase.INSTALL )
 public class InstallMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/install-install.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-jar-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-jar-plugin/pom.xml
index 917698c..3d74ea1 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-jar-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-jar-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-jar-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-jar-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
index 1f6a931..e61c2a7 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-jar-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-jar-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal jar
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "jar", defaultPhase = LifecyclePhase.PACKAGE )
 public class JarMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/jar-jar.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-javadoc-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-javadoc-plugin/pom.xml
index a45501c..9e5477a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-javadoc-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-javadoc-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
index 322d49e..409466f 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal jar
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "jar", defaultPhase = LifecyclePhase.PACKAGE )
 public class JarMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/javadoc-jar.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/pom.xml
index 1ca0946..609d130 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/AddPluginArtifactMetadataMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/AddPluginArtifactMetadataMojo.java
index e06cd6a..ac260b3 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/AddPluginArtifactMetadataMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/AddPluginArtifactMetadataMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal addPluginArtifactMetadata
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "addPluginArtifactMetadata", defaultPhase = LifecyclePhase.PACKAGE )
 public class AddPluginArtifactMetadataMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/plugin-add-plugin-artifact-metadata.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/DescriptorMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/DescriptorMojo.java
index 12abda8..b4a54fc 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/DescriptorMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/DescriptorMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal descriptor
- * @phase generate-resources
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "descriptor", defaultPhase = LifecyclePhase.GENERATE_RESOURCES )
 public class DescriptorMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/plugin-descriptor.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/UpdateRegistryMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/UpdateRegistryMojo.java
index 002ea33..9428765 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/UpdateRegistryMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/coreit/UpdateRegistryMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal updateRegistry
- * @phase install
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "updateRegistry", defaultPhase = LifecyclePhase.INSTALL )
 public class UpdateRegistryMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/plugin-update-registry.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-rar-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-rar-plugin/pom.xml
index be49bab..1f0c263 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-rar-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-rar-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-rar-plugin/src/main/java/org/apache/maven/plugin/coreit/RarMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-rar-plugin/src/main/java/org/apache/maven/plugin/coreit/RarMojo.java
index 9a1aaf8..d1bda7c 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-rar-plugin/src/main/java/org/apache/maven/plugin/coreit/RarMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-rar-plugin/src/main/java/org/apache/maven/plugin/coreit/RarMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal rar
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "rar", defaultPhase = LifecyclePhase.PACKAGE )
 public class RarMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/rar-rar.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/pom.xml
index 7267091..06cdea1 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/src/main/java/org/apache/maven/plugin/coreit/ResourcesMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/src/main/java/org/apache/maven/plugin/coreit/ResourcesMojo.java
index 9060a47..956d68e 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/src/main/java/org/apache/maven/plugin/coreit/ResourcesMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/src/main/java/org/apache/maven/plugin/coreit/ResourcesMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -34,35 +37,31 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal resources
- * @phase process-resources
- */
+  */
+@Mojo( name = "resources", defaultPhase = LifecyclePhase.PROCESS_RESOURCES )
 public class ResourcesMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/resources-resources.txt";
 
     /**
      * An optional message line to write to the output file (using UTF-8 encoding). If given, the output file will be
      * opened in append mode.
      *
-     * @parameter
      */
+    @Parameter
     private String message;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/src/main/java/org/apache/maven/plugin/coreit/TestResourcesMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/src/main/java/org/apache/maven/plugin/coreit/TestResourcesMojo.java
index f687393..e258111 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/src/main/java/org/apache/maven/plugin/coreit/TestResourcesMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-resources-plugin/src/main/java/org/apache/maven/plugin/coreit/TestResourcesMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal testResources
- * @phase process-test-resources
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "testResources", defaultPhase = LifecyclePhase.PROCESS_TEST_RESOURCES )
 public class TestResourcesMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/resources-test-resources.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/pom.xml
index bb404e8..f5030b9 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/AttachDescriptorMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/AttachDescriptorMojo.java
index 91ae5b3..a2af26a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/AttachDescriptorMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/AttachDescriptorMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal attach-descriptor
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "attach-descriptor", defaultPhase = LifecyclePhase.PACKAGE )
 public class AttachDescriptorMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/site-attach-descriptor.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
index 650d0cb..4667e70 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/DeployMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal deploy
- * @phase site-deploy
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "deploy", defaultPhase = LifecyclePhase.SITE_DEPLOY )
 public class DeployMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/site-deploy.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/SiteMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/SiteMojo.java
index 6f71afa..24bdff8 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/SiteMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-site-plugin/src/main/java/org/apache/maven/plugin/coreit/SiteMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal site
- * @phase site
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "site", defaultPhase = LifecyclePhase.SITE )
 public class SiteMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/site-site.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/pom.xml
index 6527764..78b44f9 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
index e56bec9..87f0f79 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/src/main/java/org/apache/maven/plugin/coreit/JarMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal jar
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "jar", defaultPhase = LifecyclePhase.PACKAGE )
 public class JarMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/source-jar.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/src/main/java/org/apache/maven/plugin/coreit/JarNoFork.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/src/main/java/org/apache/maven/plugin/coreit/JarNoFork.java
index e406e5b..e80864b 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/src/main/java/org/apache/maven/plugin/coreit/JarNoFork.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-source-plugin/src/main/java/org/apache/maven/plugin/coreit/JarNoFork.java
@@ -19,12 +19,14 @@
  * under the License.
  */
 
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+
 /**
  * Creates a text file in the project base directory.
  *
- * @goal jar-no-fork
- * @phase package
- */
+  */
+@Mojo( name = "jar-no-fork", defaultPhase = LifecyclePhase.PACKAGE )
 public class JarNoFork extends JarMojo
 {
 }
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-surefire-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-surefire-plugin/pom.xml
index 5fede8f..6f8f707 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-surefire-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-surefire-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
index 725798f..da82018 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal test
- * @phase test
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "test", defaultPhase = LifecyclePhase.TEST )
 public class TestMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/surefire-test.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-war-plugin/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-war-plugin/pom.xml
index 17eb490..3f6732a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-war-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-war-plugin/pom.xml
@@ -48,13 +48,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-war-plugin/src/main/java/org/apache/maven/plugin/coreit/WarMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-war-plugin/src/main/java/org/apache/maven/plugin/coreit/WarMojo.java
index ab906e1..c984afe 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-war-plugin/src/main/java/org/apache/maven/plugin/coreit/WarMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-core-stubs/maven-war-plugin/src/main/java/org/apache/maven/plugin/coreit/WarMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,30 +33,26 @@
 /**
  * Creates a text file in the project base directory.
  *
- * @goal war
- * @phase package
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "war", defaultPhase = LifecyclePhase.PACKAGE )
 public class WarMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     private MavenProject project;
 
     /**
      * The path to the output file, relative to the project base directory.
      *
-     * @parameter
      */
+    @Parameter
     private String pathname = "target/war-war.txt";
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/pom.xml
index 7899923..74da629 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/pom.xml
@@ -46,19 +46,21 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-core</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java
index 2e4124c..bd33f40 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java
@@ -22,6 +22,7 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.BufferedWriter;
@@ -43,11 +44,8 @@
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     protected MavenProject project;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/AggregateTestMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/AggregateTestMojo.java
index e570d1e..b5d5863 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/AggregateTestMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/AggregateTestMojo.java
@@ -21,6 +21,9 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 
 import java.util.List;
@@ -31,11 +34,8 @@
  * dependencies are dumped.
  *
  * @author Benjamin Bentmann
- *
- * @goal aggregate-test
- * @requiresDependencyCollection test
- * @aggregator true
  */
+@Mojo( name = "aggregate-test", requiresDependencyCollection = ResolutionScope.TEST, aggregator = true )
 public class AggregateTestMojo
     extends AbstractDependencyMojo
 {
@@ -45,18 +45,15 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the test artifacts, the collection of project artifacts additionally contains those artifacts that
      * do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
      * The Maven projects in the reactor.
-     *
-     * @parameter default-value="${reactorProjects}"
-     * @readonly
      */
-    private List reactorProjects;
+    @Parameter( defaultValue = "${reactorProjects}", readonly = true )
+    private List<MavenProject> reactorProjects;
 
     /**
      * Runs this mojo.
@@ -68,10 +65,8 @@
     {
         try
         {
-            for ( Object reactorProject : reactorProjects )
+            for ( MavenProject project : reactorProjects )
             {
-                MavenProject project = (MavenProject) reactorProject;
-
                 writeArtifacts( filter( projectArtifacts, project ), project.getArtifacts() );
 
                 // NOTE: We can't make any assumptions about the class path but as a minimum it must not cause an
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
index 13d42c0..a39d921 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
@@ -21,16 +21,17 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Creates text files that list the dependencies with scope compile in the order returned from the Maven core.
  *
- * @goal compile
- * @requiresDependencyCollection compile
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "compile", requiresDependencyCollection = ResolutionScope.COMPILE )
 public class CompileMojo
     extends AbstractDependencyMojo
 {
@@ -40,18 +41,16 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the compile artifacts, the collection of project artifacts additionally contains those artifacts
      * that do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
      * The path to the output file for the compile artifacts, relative to the project base directory. Each line of this
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk.
-     *
-     * @parameter property="depres.compileArtifacts"
      */
+    @Parameter( property = "depres.compileArtifacts" )
     private String compileArtifacts;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/RuntimeMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/RuntimeMojo.java
index 08a1042..b1892f0 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/RuntimeMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/RuntimeMojo.java
@@ -21,16 +21,17 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Creates text files that list the dependencies with scope runtime in the order returned from the Maven core.
  *
- * @goal runtime
- * @requiresDependencyCollection runtime
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "runtime", requiresDependencyCollection = ResolutionScope.RUNTIME )
 public class RuntimeMojo
     extends AbstractDependencyMojo
 {
@@ -40,18 +41,16 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the runtime artifacts, the collection of project artifacts additionally contains those artifacts
      * that do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
      * The path to the output file for the runtime artifacts, relative to the project base directory. Each line of this
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk.
-     *
-     * @parameter property="depres.runtimeArtifacts"
      */
+    @Parameter( property = "depres.runtimeArtifacts" )
     private String runtimeArtifacts;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
index adb3da0..cfd76cd 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-collection/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
@@ -21,16 +21,17 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Creates text files that list the dependencies with scope test in the order returned from the Maven core.
  *
- * @goal test
- * @requiresDependencyCollection test
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "test", requiresDependencyCollection = ResolutionScope.TEST )
 public class TestMojo
     extends AbstractDependencyMojo
 {
@@ -40,18 +41,16 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the test artifacts, the collection of project artifacts additionally contains those artifacts that
      * do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
      * The path to the output file for the test artifacts, relative to the project base directory. Each line of this
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk.
-     *
-     * @parameter property="depres.testArtifacts"
      */
+    @Parameter( property = "depres.testArtifacts" )
     private String testArtifacts;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/pom.xml
index ab3f1f9..897056c 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/pom.xml
@@ -46,25 +46,26 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.1.0</version>
+      <artifactId>maven-core</artifactId>
       <scope>provided</scope>
     </dependency>
-     <dependency>
+    <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-core</artifactId>
-      <version>2.1.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java
index 0bbd86b..fc08263 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java
@@ -22,6 +22,7 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.BufferedWriter;
@@ -48,11 +49,8 @@
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", required = true, readonly = true )
     protected MavenProject project;
 
     /**
@@ -61,9 +59,8 @@
      * this parameter to 1 to keep only the simple file name. The trimmed down paths will always use the forward slash
      * as directory separator. For non-positive values, the full/absolute path is returned, using the platform-specific
      * separator.
-     *
-     * @parameter property="depres.significantPathLevels"
      */
+    @Parameter( property = "depres.significantPathLevels" )
     private int significantPathLevels;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AggregateTestMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AggregateTestMojo.java
index f52bee9..ade5bf0 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AggregateTestMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AggregateTestMojo.java
@@ -21,6 +21,9 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 
 import java.util.List;
@@ -31,11 +34,8 @@
  * dependencies are dumped.
  *
  * @author Benjamin Bentmann
- *
- * @goal aggregate-test
- * @requiresDependencyResolution test
- * @aggregator true
  */
+@Mojo( name = "aggregate-test", requiresDependencyResolution = ResolutionScope.TEST, aggregator = true )
 public class AggregateTestMojo
     extends AbstractDependencyMojo
 {
@@ -45,36 +45,31 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the test artifacts, the collection of project artifacts additionally contains those artifacts that
      * do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
      * The path to the output file for the test class path, relative to the project base directory. Each line of
      * this UTF-8 encoded file specifies the absolute path to a class path element. If not specified, the class path
      * will not be written to disk.
-     *
-     * @parameter property="depres.testClassPath"
      */
+    @Parameter( property = "depres.testClassPath" )
     private String testClassPath;
 
     /**
      * The path to the properties file for the checksums of the test class path elements, relative to the project base
      * directory. The (trimmed) path to a JAR is used as the property key, the property value is the SHA-1 hash of the
      * JAR. If not specified, the class path checksums will not be calculated.
-     *
-     * @parameter property="depres.testClassPathChecksums"
      */
+    @Parameter( property = "depres.testClassPathChecksums" )
     private String testClassPathChecksums;
 
     /**
      * The Maven projects in the reactor.
-     *
-     * @parameter default-value="${reactorProjects}"
-     * @readonly
      */
-    private List reactorProjects;
+    @Parameter( defaultValue = "${reactorProjects}", readonly = true )
+    private List<MavenProject> reactorProjects;
 
     /**
      * Runs this mojo.
@@ -86,10 +81,8 @@
     {
         try
         {
-            for ( Object reactorProject : reactorProjects )
+            for ( MavenProject project : reactorProjects )
             {
-                MavenProject project = (MavenProject) reactorProject;
-
                 writeArtifacts( filter( projectArtifacts, project ), project.getArtifacts() );
                 writeClassPath( filter( testClassPath, project ), project.getTestClasspathElements() );
                 writeClassPathChecksums( filter( testClassPathChecksums, project ),
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
index d50042d..cca2c25 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/CompileMojo.java
@@ -21,18 +21,19 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Creates text files that list the dependencies with scope compile in the order returned from the Maven core. The path
  * parameters of this mojo support the token <code>&#64;idx&#64;</code> to dynamically insert a running index in order
  * to distinguish multiple executions of the same mojo.
  *
- * @goal compile
- * @requiresDependencyResolution compile
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "compile", requiresDependencyResolution = ResolutionScope.COMPILE )
 public class CompileMojo
     extends AbstractDependencyMojo
 {
@@ -42,36 +43,32 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the compile artifacts, the collection of project artifacts additionally contains those artifacts
      * that do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
      * The path to the output file for the compile artifacts, relative to the project base directory. Each line of this
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk.
-     *
-     * @parameter property="depres.compileArtifacts"
      */
+    @Parameter( property = "depres.compileArtifacts" )
     private String compileArtifacts;
 
     /**
      * The path to the output file for the compile class path, relative to the project base directory. Each line of
      * this UTF-8 encoded file specifies the absolute path to a class path element. If not specified, the class path
      * will not be written to disk.
-     *
-     * @parameter property="depres.compileClassPath"
      */
+    @Parameter( property = "depres.compileClassPath" )
     private String compileClassPath;
 
     /**
      * The path to the properties file for the checksums of the compile class path elements, relative to the project
      * base directory. The (trimmed) path to a JAR is used as the property key, the property value is the SHA-1 hash of
      * the JAR. If not specified, the class path checksums will not be calculated.
-     *
-     * @parameter property="depres.compileClassPathChecksums"
      */
+    @Parameter( property = "depres.compileClassPathChecksums" )
     private String compileClassPathChecksums;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/CompileRuntimeMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/CompileRuntimeMojo.java
index 13f2d78..367e153 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/CompileRuntimeMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/CompileRuntimeMojo.java
@@ -21,18 +21,19 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Creates text files that list the dependencies with scope compile and runtime in the order returned from the Maven
  * core. The path parameters of this mojo support the token <code>&#64;idx&#64;</code> to dynamically insert a running
  * index in order to distinguish multiple executions of the same mojo.
  *
- * @goal compile-runtime
- * @requiresDependencyResolution compile+runtime
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "compile-runtime", requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME )
 public class CompileRuntimeMojo
     extends AbstractDependencyMojo
 {
@@ -42,63 +43,56 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the compile artifacts, the collection of project artifacts additionally contains those artifacts
      * that do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
      * The path to the output file for the compile artifacts, relative to the project base directory. Each line of this
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk.
-     *
-     * @parameter property="depres.compileArtifacts"
      */
+    @Parameter( property = "depres.compileArtifacts" )
     private String compileArtifacts;
 
     /**
      * The path to the output file for the compile class path, relative to the project base directory. Each line of
      * this UTF-8 encoded file specifies the absolute path to a class path element. If not specified, the class path
      * will not be written to disk.
-     *
-     * @parameter property="depres.compileClassPath"
      */
+    @Parameter( property = "depres.compileClassPath" )
     private String compileClassPath;
 
     /**
      * The path to the properties file for the checksums of the compile class path elements, relative to the project
      * base directory. The (trimmed) path to a JAR is used as the property key, the property value is the SHA-1 hash of
      * the JAR. If not specified, the class path checksums will not be calculated.
-     *
-     * @parameter property="depres.compileClassPathChecksums"
      */
+    @Parameter( property = "depres.compileClassPathChecksums" )
     private String compileClassPathChecksums;
 
     /**
      * The path to the output file for the runtime artifacts, relative to the project base directory. Each line of this
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk.
-     *
-     * @parameter property="depres.runtimeArtifacts"
      */
+    @Parameter( property = "depres.runtimeArtifacts" )
     private String runtimeArtifacts;
 
     /**
      * The path to the output file for the runtime class path, relative to the project base directory. Each line of
      * this UTF-8 encoded file specifies the absolute path to a class path element. If not specified, the class path
      * will not be written to disk.
-     *
-     * @parameter property="depres.runtimeClassPath"
      */
+    @Parameter( property = "depres.runtimeClassPath" )
     private String runtimeClassPath;
 
     /**
      * The path to the properties file for the checksums of the runtime class path elements, relative to the project
      * base directory. The (trimmed) path to a JAR is used as the property key, the property value is the SHA-1 hash of
      * the JAR. If not specified, the class path checksums will not be calculated.
-     *
-     * @parameter property="depres.runtimeClassPathChecksums"
      */
+    @Parameter( property = "depres.runtimeClassPathChecksums" )
     private String runtimeClassPathChecksums;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/ForkTestMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/ForkTestMojo.java
index ec2d1ea..189bfea 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/ForkTestMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/ForkTestMojo.java
@@ -21,16 +21,17 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
  * Forks the "test" mojo to check interplay of forking and dependency resolution.
  *
- * @goal fork-test
- * @execute goal="test"
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "fork-test" )
+@Execute( goal = "test" )
 public class ForkTestMojo
     extends AbstractMojo
 {
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/InjectMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/InjectMojo.java
index 56841ce..e7a8328 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/InjectMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/InjectMojo.java
@@ -23,6 +23,9 @@
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.util.Arrays;
@@ -35,8 +38,8 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal inject
  */
+@Mojo( name = "inject" )
 public class InjectMojo
     extends AbstractMojo
 {
@@ -44,31 +47,25 @@
     /**
      * The version-less keys in the form <code>groupId:artifactId</code> of the plugin artifacts to inject into
      * dependency artifacts of the project.
-     *
-     * @parameter
      */
+    @Parameter
     private String[] artifacts;
 
     /**
-     * @parameter default-value="${plugin.artifacts}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${plugin.artifacts}", readonly = true )
     private Collection pluginArtifacts;
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", readonly = true, required = true )
     private MavenProject project;
 
     /**
      * The artifact factory.
-     *
-     * @component
      */
+    @Component
     private ArtifactFactory factory;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/ResolveOneDependencyMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/ResolveOneDependencyMojo.java
index b99b9e7..87f3276 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/ResolveOneDependencyMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/ResolveOneDependencyMojo.java
@@ -29,6 +29,10 @@
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -39,93 +43,73 @@
  * Attempts to resolve a single artifact from dependencies, and logs the results for the Verifier to look at.
  *
  * @author bimargulies
- *
- * @goal resolve-one-dependency
- * @requiresDependencyResolution runtime
  */
+@Mojo( name = "resolve-one-dependency", requiresDependencyResolution = ResolutionScope.RUNTIME )
 public class ResolveOneDependencyMojo
     extends AbstractDependencyMojo
 {
 
     /**
      * Group ID of the artifact to resolve.
-     *
-     * @parameter
-     * @required
      */
+    @Parameter( required = true )
     private String groupId;
 
     /**
      * Artifact ID of the artifact to resolve.
-     *
-     * @parameter
-     * @required
      */
+    @Parameter( required = true )
     private String artifactId;
 
     /**
      * Version  of the artifact to resolve.
-     *
-     * @parameter
-     * @required
      */
+    @Parameter( required = true )
     private String version;
 
     /**
      * Type of the artifact to resolve.
-     *
-     * @parameter
-     * @required
      */
+    @Parameter( required = true )
     private String type;
 
     /**
      * Classifier of the artifact to resolve.
-     *
-     * @parameter
      */
+    @Parameter
     private String classifier;
 
     /**
      * The scope to resolve for.
-     *
-     * @parameter
-     * @required
      */
+    @Parameter( required = true )
     private String scope;
 
     /**
-     * @parameter default-value="${project}"
-     * @required
      */
+    @Parameter( defaultValue = "${project}", required = true )
     MavenProject project;
 
     /**
-     * @component
      */
+    @Component
     private ArtifactResolver resolver;
 
     /**
-     * @component
-     * @readonly
-     * @required
      */
+    @Component
     private ArtifactFactory artifactFactory;
 
     /**
      * The Maven session.
-     *
-     * @parameter default-value="${session}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${session}", required = true, readonly = true )
     private MavenSession session;
 
     /**
      * Metadata source object.
-     *
-     * @component
      */
+    @Component
     private ArtifactMetadataSource metadataSource;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/RuntimeMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/RuntimeMojo.java
index 0d8be7f..f4ee930 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/RuntimeMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/RuntimeMojo.java
@@ -21,18 +21,19 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Creates text files that list the dependencies with scope runtime in the order returned from the Maven core. The path
  * parameters of this mojo support the token <code>&#64;idx&#64;</code> to dynamically insert a running index in order
  * to distinguish multiple executions of the same mojo.
  *
- * @goal runtime
- * @requiresDependencyResolution runtime
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "runtime", requiresDependencyResolution = ResolutionScope.RUNTIME )
 public class RuntimeMojo
     extends AbstractDependencyMojo
 {
@@ -42,36 +43,32 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the runtime artifacts, the collection of project artifacts additionally contains those artifacts
      * that do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
      * The path to the output file for the runtime artifacts, relative to the project base directory. Each line of this
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk.
-     *
-     * @parameter property="depres.runtimeArtifacts"
      */
+    @Parameter( property = "depres.runtimeArtifacts" )
     private String runtimeArtifacts;
 
     /**
      * The path to the output file for the runtime class path, relative to the project base directory. Each line of
      * this UTF-8 encoded file specifies the absolute path to a class path element. If not specified, the class path
      * will not be written to disk.
-     *
-     * @parameter property="depres.runtimeClassPath"
      */
+    @Parameter( property = "depres.runtimeClassPath" )
     private String runtimeClassPath;
 
     /**
      * The path to the properties file for the checksums of the runtime class path elements, relative to the project
      * base directory. The (trimmed) path to a JAR is used as the property key, the property value is the SHA-1 hash of
      * the JAR. If not specified, the class path checksums will not be calculated.
-     *
-     * @parameter property="depres.runtimeClassPathChecksums"
      */
+    @Parameter( property = "depres.runtimeClassPathChecksums" )
     private String runtimeClassPathChecksums;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
index 85e9ebe..60ba7b9 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/TestMojo.java
@@ -21,18 +21,19 @@
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 
 /**
  * Creates text files that list the dependencies with scope test in the order returned from the Maven core. The path
  * parameters of this mojo support the token <code>&#64;idx&#64;</code> to dynamically insert a running index in order
  * to distinguish multiple executions of the same mojo.
  *
- * @goal test
- * @requiresDependencyResolution test
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "test", requiresDependencyResolution = ResolutionScope.TEST )
 public class TestMojo
     extends AbstractDependencyMojo
 {
@@ -42,9 +43,8 @@
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk. Unlike the test artifacts, the collection of project artifacts additionally contains those artifacts that
      * do not contribute to the class path.
-     *
-     * @parameter property="depres.projectArtifacts"
      */
+    @Parameter( property = "depres.projectArtifacts" )
     private String projectArtifacts;
 
     /**
@@ -52,36 +52,32 @@
      * of this UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be
      * written to disk. Unlike the test artifacts, the collection of direct project artifacts additionally contains
      * those artifacts that do not contribute to the class path.
-     *
-     * @parameter property="depres.dependencyArtifacts"
      */
+    @Parameter( property = "depres.dependencyArtifacts" )
     private String dependencyArtifacts;
 
     /**
      * The path to the output file for the test artifacts, relative to the project base directory. Each line of this
      * UTF-8 encoded file specifies an artifact identifier. If not specified, the artifact list will not be written to
      * disk.
-     *
-     * @parameter property="depres.testArtifacts"
      */
+    @Parameter( property = "depres.testArtifacts" )
     private String testArtifacts;
 
     /**
      * The path to the output file for the test class path, relative to the project base directory. Each line of
      * this UTF-8 encoded file specifies the absolute path to a class path element. If not specified, the class path
      * will not be written to disk.
-     *
-     * @parameter property="depres.testClassPath"
      */
+    @Parameter( property = "depres.testClassPath" )
     private String testClassPath;
 
     /**
      * The path to the properties file for the checksums of the test class path elements, relative to the project base
      * directory. The (trimmed) path to a JAR is used as the property key, the property value is the SHA-1 hash of the
      * JAR. If not specified, the class path checksums will not be calculated.
-     *
-     * @parameter property="depres.testClassPathChecksums"
      */
+    @Parameter( property = "depres.testClassPathChecksums" )
     private String testClassPathChecksums;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-error/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-error/pom.xml
index ed94ba1..7928ff4 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-error/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-error/pom.xml
@@ -46,7 +46,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -61,7 +65,6 @@
     <plugins>
       <plugin>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>2.2</version>
         <configuration>
           <excludes>
             <exclude>**/org/apache/maven/plugin/coreit/MojoComponentLookupExceptionMojo*</exclude>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoComponentLookupExceptionMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoComponentLookupExceptionMojo.java
index d824061..6b23f0e 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoComponentLookupExceptionMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoComponentLookupExceptionMojo.java
@@ -22,11 +22,11 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
- * @goal mojo-component-lookup-exception
- * @requiresProject false
  */
+@Mojo( name = "mojo-component-lookup-exception", requiresProject = false )
 public class MojoComponentLookupExceptionMojo
     extends AbstractMojo
 {
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoExecutionExceptionMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoExecutionExceptionMojo.java
index e0014f4..abb9e25 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoExecutionExceptionMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoExecutionExceptionMojo.java
@@ -21,18 +21,16 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
- * @goal mojo-execution-exception
- * @requiresProject false
  */
+@Mojo( name = "mojo-execution-exception", requiresProject = false )
 public class MojoExecutionExceptionMojo
     extends AbstractMojo
 {
-    /**
-     * @parameter property="error.message" default-value="Planned MojoExecutionException."
-     * @required
-     */
+    @Parameter( property = "error.message", defaultValue = "Planned MojoExecutionException.", required = true )
     private String message;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoFailureExceptionMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoFailureExceptionMojo.java
index 4810153..b86a830 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoFailureExceptionMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/MojoFailureExceptionMojo.java
@@ -21,11 +21,12 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
- * @goal mojo-failure-exception
- * @requiresProject false
  */
+@Mojo( name = "mojo-failure-exception", requiresProject = false )
 public class MojoFailureExceptionMojo
     extends AbstractMojo
 {
@@ -33,23 +34,19 @@
      * Message used in {@link MojoFailureException#MojoFailureException(String)}, unless longMessage
      * is supplied; then, this becomes the short message in
      * {@link MojoFailureException#MojoFailureException(Object, String, String)}.
-     *
-     * @parameter property="error.message" default-value="Planned MojoExecutionException."
-     * @required
      */
+    @Parameter( property = "error.message", defaultValue = "Planned MojoExecutionException.", required = true )
     private String message;
 
     /**
      * If supplied, The form {@link MojoFailureException#MojoFailureException(Object, String, String)} will be used.
-     *
-     * @parameter property="error.longMessage"
-     * @required
      */
+    @Parameter( property = "error.longMessage", required = true )
     private String longMessage;
 
     /**
-     * @parameter property="error.source"
      */
+    @Parameter( property = "error.source" )
     private String source;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/NoClassDefFoundErrorComponentMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/NoClassDefFoundErrorComponentMojo.java
index d220ffa..cc0b461 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/NoClassDefFoundErrorComponentMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/NoClassDefFoundErrorComponentMojo.java
@@ -19,26 +19,26 @@
  * under the License.
  */
 
+import junit.framework.TestCase;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 
-import junit.framework.TestCase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Takes a parameter with a class from a provided-scope dependency, so that the mojo class itself won't be
  * loadable when that dependency is missing (in the runtime environment).
- *
- * @goal no-class-def-found-error-param
- * @requiresProject false
  */
+@Mojo( name = "no-class-def-found-error-param", requiresProject = false )
 public class NoClassDefFoundErrorComponentMojo
     extends AbstractMojo
 {
 
     /**
-     * @parameter default-value="foo"
      */
+    @Parameter( defaultValue = "foo" )
     private TestCase value;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/NoClassDefFoundErrorInterfaceMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/NoClassDefFoundErrorInterfaceMojo.java
index 6f88645..08f9254 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/NoClassDefFoundErrorInterfaceMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/NoClassDefFoundErrorInterfaceMojo.java
@@ -19,23 +19,21 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.Mojo;
+import junit.framework.TestCase;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 
-import junit.framework.TestCase;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
  * Implements a class from a provided-scope dependency, so that the mojo class itself won't be
  * loadable when that dependency is missing (in the runtime environment).
- *
- * @goal no-class-def-found-error-mojo
- * @requiresProject false
  */
+@Mojo( name = "no-class-def-found-error-mojo", requiresProject = false )
 public class NoClassDefFoundErrorInterfaceMojo
-    extends TestCase
-    implements Mojo
+        extends TestCase
+        implements org.apache.maven.plugin.Mojo
 {
 
     private Log log;
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/RequirementComponentLookupExceptionMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/RequirementComponentLookupExceptionMojo.java
index d1a7722..bcc73d5 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/RequirementComponentLookupExceptionMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-error/src/main/java/org/apache/maven/plugin/coreit/RequirementComponentLookupExceptionMojo.java
@@ -19,23 +19,24 @@
  * under the License.
  */
 
+import junit.framework.TestCase;
 import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.Mojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
- * @goal requirement-component-lookup-exception
- * @requiresProject false
  */
+@Mojo( name = "requirement-component-lookup-exception", requiresProject = false )
 public class RequirementComponentLookupExceptionMojo
     extends AbstractMojo
 {
 
     /**
-     * @component role="missing-component" roleHint="triggers-error"
      */
-    private Mojo dependency;
+    @Component( role = TestCase.class, hint = "triggers-error" )
+    private org.apache.maven.plugin.Mojo dependency;
 
     public void execute()
         throws MojoExecutionException, MojoFailureException
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-expression/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-expression/pom.xml
index ae7c86c..5776889 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-expression/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-expression/pom.xml
@@ -42,7 +42,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-expression/src/main/java/org/apache/maven/plugin/coreit/EvalMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-expression/src/main/java/org/apache/maven/plugin/coreit/EvalMojo.java
index 5be9f80..3c161cc 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-expression/src/main/java/org/apache/maven/plugin/coreit/EvalMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-expression/src/main/java/org/apache/maven/plugin/coreit/EvalMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.IOException;
@@ -55,82 +58,66 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal eval
- * @phase initialize
- */
+  */
+@Mojo( name = "eval", defaultPhase = LifecyclePhase.INITIALIZE )
 public class EvalMojo
     extends AbstractMojo
 {
 
     /**
      * The project's base directory, used for manual path translation.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir", readonly = true )
     private File basedir;
 
     /**
      * The path to the output file for the properties with the expression values. For each expression given by the
      * parameter {@link #expressions}, a similar named properties key will be used to save the expression value. If an
      * expression evaluated to <code>null</code>, there will be no corresponding key in the properties file.
-     *
-     * @parameter property="expression.outputFile"
      */
+    @Parameter( property = "expression.outputFile" )
     private File outputFile;
 
     /**
      * The set of expressions to evaluate.
-     *
-     * @parameter
      */
+    @Parameter
     private String[] expressions;
 
     /**
      * The comma separated set of expressions to evaluate.
-     *
-     * @parameter property="expression.expressions"
      */
+    @Parameter( property = "expression.expressions" )
     private String expressionList;
 
     /**
      * The current Maven project against which expressions are evaluated.
-     *
-     * @parameter default-value="${project}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${project}", readonly = true )
     private Object project;
 
     /**
      * The forked Maven project against which expressions are evaluated.
-     *
-     * @parameter default-value="${executedProject}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${executedProject}", readonly = true )
     private Object executedProject;
 
     /**
      * The merged user/global settings of the current build against which expressions are evaluated.
-     *
-     * @parameter default-value="${settings}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${settings}", readonly = true )
     private Object settings;
 
     /**
      * The session context of the current build against which expressions are evaluated.
-     *
-     * @parameter default-value="${session}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${session}", readonly = true )
     private Object session;
 
     /**
      * The local repository of the current build against which expressions are evaluated.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${localRepository}", readonly = true )
     private Object localRepository;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-extension-consumer/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-extension-consumer/pom.xml
index 4ec4117..98ecae6 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-extension-consumer/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-extension-consumer/pom.xml
@@ -45,7 +45,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-extension-consumer/src/main/java/org/apache/maven/plugin/coreit/UpdateSingletonMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-extension-consumer/src/main/java/org/apache/maven/plugin/coreit/UpdateSingletonMojo.java
index 5e204a8..40a11f7 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-extension-consumer/src/main/java/org/apache/maven/plugin/coreit/UpdateSingletonMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-extension-consumer/src/main/java/org/apache/maven/plugin/coreit/UpdateSingletonMojo.java
@@ -25,37 +25,40 @@
 import org.apache.maven.coreit.component.StatefulSingleton;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Updates the state of the singleton component and optionally dumps the updated state to a properties file.
  *
- * @goal update-singleton
- * @phase initialize
- *
+  *
  * @author Benjamin Bentmann
  */
+@Mojo( name = "update-singleton", defaultPhase = LifecyclePhase.INITIALIZE )
 public class UpdateSingletonMojo
     extends AbstractMojo
 {
 
     /**
-     * @parameter default-value="consumer"
      */
+    @Parameter( defaultValue = "consumer" )
     private String key;
 
     /**
-     * @parameter default-value="passed"
      */
+    @Parameter( defaultValue = "passed" )
     private String value;
 
     /**
-     * @parameter
      */
+    @Parameter
     private File propertiesFile;
 
     /**
-     * @component
      */
+    @Component
     private StatefulSingleton singleton;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-extension-provider/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-extension-provider/pom.xml
index 368dc86..97d0895 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-extension-provider/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-extension-provider/pom.xml
@@ -46,7 +46,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-extension-provider/src/main/java/org/apache/maven/plugin/coreit/UpdateSingletonMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-extension-provider/src/main/java/org/apache/maven/plugin/coreit/UpdateSingletonMojo.java
index 76ba4b9..c2ac387 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-extension-provider/src/main/java/org/apache/maven/plugin/coreit/UpdateSingletonMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-extension-provider/src/main/java/org/apache/maven/plugin/coreit/UpdateSingletonMojo.java
@@ -25,37 +25,40 @@
 import org.apache.maven.coreit.component.StatefulSingleton;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Updates the state of the singleton component and optionally dumps the updated state to a properties file.
  *
- * @goal update-singleton
- * @phase initialize
- *
+  *
  * @author Benjamin Bentmann
  */
+@Mojo( name = "update-singleton", defaultPhase = LifecyclePhase.INITIALIZE )
 public class UpdateSingletonMojo
     extends AbstractMojo
 {
 
     /**
-     * @parameter default-value="provider"
      */
+    @Parameter( defaultValue = "provider" )
     private String key;
 
     /**
-     * @parameter default-value="passed"
      */
+    @Parameter( defaultValue = "passed" )
     private String value;
 
     /**
-     * @parameter
      */
+    @Parameter
     private File propertiesFile;
 
     /**
-     * @component
      */
+    @Component
     private StatefulSingleton singleton;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-extension1/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-extension1/pom.xml
index 6fed5a2..8e43200 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-extension1/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-extension1/pom.xml
@@ -44,7 +44,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-extension1/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-extension1/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
index 2fc102a..4522ece 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-extension1/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-extension1/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
@@ -20,10 +20,11 @@
  */
 
 import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
- * @goal dummy
- */
+  */
+@Mojo( name = "dummy" )
 public class CoreItMojo
     extends AbstractMojo
 {
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-extension2/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-extension2/pom.xml
index f399088..168ca53 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-extension2/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-extension2/pom.xml
@@ -45,7 +45,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-extension2/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-extension2/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
index 2fc102a..4522ece 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-extension2/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-extension2/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
@@ -20,10 +20,11 @@
  */
 
 import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
- * @goal dummy
- */
+  */
+@Mojo( name = "dummy" )
 public class CoreItMojo
     extends AbstractMojo
 {
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-fork/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-fork/pom.xml
index da2b6e0..77b7d6a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-fork/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-fork/pom.xml
@@ -42,13 +42,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
       <exclusions>
         <exclusion>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkGoalAggregatorMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkGoalAggregatorMojo.java
index 2b8a7a4..f430005 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkGoalAggregatorMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkGoalAggregatorMojo.java
@@ -21,34 +21,36 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.util.List;
 
 /**
- * @goal fork-goal-aggregator
- * @aggregator true
- * @execute goal="touch"
  */
+@Mojo( name = "fork-goal-aggregator", aggregator = true )
+@Execute( goal = "touch" )
 public class ForkGoalAggregatorMojo
     extends AbstractMojo
 {
     /**
-     * @parameter default-value="${project}"
      */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
     /**
-     * @parameter default-value="${reactorProjects}"
      */
-    private List reactorProjects;
+    @Parameter( defaultValue = "${reactorProjects}" )
+    private List<MavenProject> reactorProjects;
 
     public void execute()
         throws MojoExecutionException
     {
-        for ( Object reactorProject : reactorProjects )
+        for ( MavenProject reactorProject : reactorProjects )
         {
-            MavenProject executedProject = ( (MavenProject) reactorProject ).getExecutionProject();
+            MavenProject executedProject = reactorProject.getExecutionProject();
 
             if ( !executedProject.getBuild().getFinalName().equals( TouchMojo.FINAL_NAME ) )
             {
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkGoalMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkGoalMojo.java
index 2af4cc2..cc9a5ac 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkGoalMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkGoalMojo.java
@@ -21,24 +21,22 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 /**
- * @goal fork-goal
- *
- * @execute goal="touch"
  */
+@Mojo( name = "fork-goal" )
+@Execute( goal = "touch" )
 public class ForkGoalMojo
     extends AbstractMojo
 {
-    /**
-     * @parameter default-value="${project}"
-     */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
-    /**
-     * @parameter default-value="${executedProject}"
-     */
+    @Parameter( defaultValue = "${executedProject}" )
     private MavenProject executedProject;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleAggregatorMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleAggregatorMojo.java
index 038170d..75e5720 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleAggregatorMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleAggregatorMojo.java
@@ -21,27 +21,26 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.util.List;
 
 /**
- * @goal fork-lifecycle-aggregator
- * @aggregator true
- * @execute phase="generate-sources" lifecycle="foo"
  */
+@Mojo( name = "fork-lifecycle-aggregator", aggregator = true )
+@Execute( phase = LifecyclePhase.GENERATE_SOURCES, lifecycle = "foo" )
 public class ForkLifecycleAggregatorMojo
     extends AbstractMojo
 {
 
-    /**
-     * @parameter default-value="${project}"
-     */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
-    /**
-     * @parameter default-value="${reactorProjects}"
-     */
+    @Parameter( defaultValue = "${reactorProjects}" )
     private List reactorProjects;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleMojo.java
index 217da54..c813cc4 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleMojo.java
@@ -21,31 +21,28 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
 
 /**
- * @goal fork
- *
- * @execute phase="generate-sources" lifecycle="foo"
  */
+@Mojo( name = "fork" )
+@Execute( phase = LifecyclePhase.GENERATE_RESOURCES, lifecycle = "foo" )
 public class ForkLifecycleMojo
     extends AbstractMojo
 {
-    /**
-     * @parameter default-value="${project}"
-     */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
-    /**
-     * @parameter default-value="${executedProject}"
-     */
+    @Parameter( defaultValue = "${executedProject}" )
     private MavenProject executedProject;
 
-    /**
-     * @parameter default-value="${project.build.directory}"
-     */
+    @Parameter( defaultValue = "${project.build.directory}" )
     private File touchDirectory;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleNoProjectMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleNoProjectMojo.java
index 112b14c..473c11d 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleNoProjectMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/ForkLifecycleNoProjectMojo.java
@@ -21,27 +21,25 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 
 /**
- * @goal fork-lifecycle-no-project
- * @requiresProject false
- *
- * @execute phase="generate-sources" lifecycle="foo"
  */
+@Mojo( name = "fork-lifecycle-no-project", requiresProject = false )
+@Execute( phase = LifecyclePhase.GENERATE_RESOURCES, lifecycle = "foo" )
 public class ForkLifecycleNoProjectMojo
     extends AbstractMojo
 {
 
-    /**
-     * @parameter default-value="${project.build.finalName}"
-     */
+    @Parameter( defaultValue = "${project.build.finalName}" )
     private String finalName;
 
-    /**
-     * @parameter default-value="target"
-     */
+    @Parameter( defaultValue = "target" )
     private File touchDirectory;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
index 3c7f4b8..0b71e12 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-fork/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
@@ -21,6 +21,9 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -29,25 +32,18 @@
 import java.io.IOException;
 
 /**
- * @goal touch
- *
- * @phase process-sources
  */
+@Mojo( name = "touch", defaultPhase = LifecyclePhase.PROCESS_RESOURCES )
 public class TouchMojo
     extends AbstractMojo
 {
 
     static final String FINAL_NAME = "coreitified";
 
-    /**
-     * @parameter default-value="${project}"
-     */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
-    /**
-     * @parameter default-value="${project.build.directory}"
-     * @required
-     */
+    @Parameter( defaultValue = "${project.build.directory}", required = true )
     private File outputDirectory;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-invalid-descriptor/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-invalid-descriptor/pom.xml
index 9e27f3a..e8f7f84 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-invalid-descriptor/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-invalid-descriptor/pom.xml
@@ -37,14 +37,12 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <scope>test</scope>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <scope>provided</scope>
     </dependency>
   </dependencies>
 
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-invalid-descriptor/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-invalid-descriptor/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
index 82e88ff..c28ceba 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-invalid-descriptor/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-invalid-descriptor/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
@@ -21,12 +21,13 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
- * @goal test
  *
  * @phase process-sources
  */
+@Mojo( name = "test" )
 public class CoreItMojo
     extends AbstractMojo
 {
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-log-file/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-log-file/pom.xml
index 58bd6ec..44f0a7b 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-log-file/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-log-file/pom.xml
@@ -46,7 +46,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/AbstractLogMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/AbstractLogMojo.java
index 7a52396..4c55c6b 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/AbstractLogMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/AbstractLogMojo.java
@@ -21,6 +21,7 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.BufferedWriter;
 import java.io.File;
@@ -41,17 +42,14 @@
 
     /**
      * The project's base directory, used for manual path translation.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The path to the output file, relative to the project's base directory.
-     *
-     * @parameter property="log.logFile"
      */
+    @Parameter( property = "log.logFile" )
     private File logFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/LogSeparatorMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/LogSeparatorMojo.java
index 684d4f7..55f590d 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/LogSeparatorMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/LogSeparatorMojo.java
@@ -20,24 +20,25 @@
  */
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Appends a separator line to the log file.
  *
  * @author Benjamin Bentmann
  *
- * @goal log-separator
- * @phase initialize
- */
+  */
+@Mojo( name = "log-separator", defaultPhase = LifecyclePhase.INITIALIZE )
 public class LogSeparatorMojo
     extends AbstractLogMojo
 {
 
     /**
      * The length of the separator line.
-     *
-     * @parameter property="log.length" default-value="80"
      */
+    @Parameter( property = "log.length", defaultValue = "80" )
     private int length;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/LogStringMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/LogStringMojo.java
index 1cbca47..9360774 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/LogStringMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/LogStringMojo.java
@@ -20,25 +20,26 @@
  */
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Appends a string to the log file.
  *
- * @goal log-string
- * @phase initialize
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "log-string", defaultPhase = LifecyclePhase.INITIALIZE )
 public class LogStringMojo
     extends AbstractLogMojo
 {
 
     /**
      * The string to append to the log file.
-     *
-     * @parameter property="log.string"
      */
+    @Parameter( property = "log.string" )
     private String string;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/ResetMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/ResetMojo.java
index 3c2a32e..97e43cc 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/ResetMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-log-file/src/main/java/org/apache/maven/plugin/coreit/ResetMojo.java
@@ -20,16 +20,17 @@
  */
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
 
 /**
  * Clears the contents of the log file by creating a new empty log file.
  *
- * @goal reset
- * @phase initialize
- *
+  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "reset", defaultPhase = LifecyclePhase.INITIALIZE )
 public class ResetMojo
     extends AbstractLogMojo
 {
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-log4j/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-log4j/pom.xml
index 22bd59a..816d44c 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-log4j/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-log4j/pom.xml
@@ -46,13 +46,21 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-log4j/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-log4j/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
index 0b0e532..9073ded 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-log4j/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-log4j/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
@@ -29,56 +29,45 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
  * Resolves an artifact and has an (unused) dependency on log4j.
  *
- * @goal it
  *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "it" )
 public class ItMojo
     extends AbstractMojo
 {
 
     /**
-     * @component
      */
+    @Component
     private ArtifactFactory artifactFactory;
 
     /**
-     * @component
      */
+    @Component
     private ArtifactResolver artifactResolver;
 
-    /**
-     * @parameter default-value="${localRepository}"
-     * @required
-     * @readonly
-     */
+    @Parameter( defaultValue = "${localRepository}", required = true, readonly = true )
     private ArtifactRepository localRepository;
 
-    /**
-     * @parameter default-value="${project.remoteArtifactRepositories}"
-     * @required
-     * @readonly
-     */
+    @Parameter( defaultValue = "${project.remoteArtifactRepositories}", required = true, readonly = true )
     private List remoteRepositories;
 
-    /**
-     * @parameter default-value="test"
-     */
+    @Parameter( defaultValue = "test" )
     private String groupId;
 
-    /**
-     * @parameter default-value="test"
-     */
+    @Parameter( defaultValue = "test" )
     private String artifactId;
 
-    /**
-     * @parameter default-value="1.0"
-     */
+    @Parameter( defaultValue = "1.0" )
     private String version;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-model-interpolation/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-model-interpolation/pom.xml
index ed39326..b59645d 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-model-interpolation/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-model-interpolation/pom.xml
@@ -38,13 +38,21 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.1.0</version>
+      <artifactId>maven-core</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
     <!-- Test the resolution of the version -->
@@ -58,10 +66,6 @@
           <artifactId>maven-verifier</artifactId>
         </exclusion>
         <exclusion>
-          <groupId>org.apache.maven</groupId>
-          <artifactId>maven-artifact</artifactId>
-        </exclusion>
-        <exclusion>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
         </exclusion>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-model-interpolation/src/main/java/org/apache/maven/plugin/coreit/PathInterpolationMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-model-interpolation/src/main/java/org/apache/maven/plugin/coreit/PathInterpolationMojo.java
index fdca914..5016de7 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-model-interpolation/src/main/java/org/apache/maven/plugin/coreit/PathInterpolationMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-model-interpolation/src/main/java/org/apache/maven/plugin/coreit/PathInterpolationMojo.java
@@ -21,6 +21,10 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.DefaultProjectBuilderConfiguration;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
@@ -29,23 +33,21 @@
 import java.util.Properties;
 
 /**
- * @goal path-interpolation
- * @phase validate
- */
+  */
+@Mojo( name = "path-interpolation", defaultPhase = LifecyclePhase.VALIDATE )
 public class PathInterpolationMojo
     extends AbstractMojo
 {
     /**
      * The model interpolator
-     * @component
      */
+    @Component
     private ModelInterpolator modelInterpolator;
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
      */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/pom.xml
index 762d6e1..7fe0dba 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/pom.xml
@@ -46,7 +46,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ConcreteComponent.java b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ConcreteTestComponent.java
similarity index 86%
rename from core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ConcreteComponent.java
rename to core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ConcreteTestComponent.java
index 4e2f756..e9aa665 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ConcreteComponent.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ConcreteTestComponent.java
@@ -26,9 +26,9 @@
  *
  * @author Benjamin Bentmann
  */
-@Component ( role = org.apache.maven.plugin.coreit.Component.class, hint = "concrete" )
-public class ConcreteComponent
-    implements org.apache.maven.plugin.coreit.Component
+@Component ( role = TestComponent.class, hint = "concrete" )
+public class ConcreteTestComponent
+        implements TestComponent
 {
 
     public String getId()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
index 01f0555..7c8a3ad 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
@@ -21,6 +21,10 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -32,26 +36,24 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal it
- * @phase initialize
- */
+  */
+@Mojo( name = "it", defaultPhase = LifecyclePhase.INITIALIZE )
 public class ItMojo
     extends AbstractMojo
 {
 
     /**
      * The path to the output file.
-     *
-     * @parameter property="touch.outputFile" default-value="target/comp.properties"
      */
+    @Parameter( property = "touch.outputFile", defaultValue = "target/comp.properties" )
     private File outputFile;
 
     /**
      * NOTE: We don't specify a role hint here!
      *
-     * @component
      */
-    private Component component;
+    @Component
+    private TestComponent component;
 
     /**
      * Runs this mojo.
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/Component.java b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
similarity index 96%
rename from core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/Component.java
rename to core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
index 3e4af15..de3256f 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/Component.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
@@ -24,7 +24,7 @@
  *
  * @author Benjamin Bentmann
  */
-public interface Component
+public interface TestComponent
 {
 
     String getId();
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/resources/META-INF/plexus/components.xml b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/resources/META-INF/plexus/components.xml
index 6c292e2..10b0935 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/resources/META-INF/plexus/components.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/resources/META-INF/plexus/components.xml
@@ -20,10 +20,10 @@
 <component-set>
   <components>
     <component>
-      <role>org.apache.maven.plugin.coreit.Component</role>
+      <role>org.apache.maven.plugin.coreit.TestComponent</role>
       <!-- NOTE: Not using "default" for the role hint is the essential piece here -->
       <role-hint>concrete</role-hint>
-      <implementation>org.apache.maven.plugin.coreit.ConcreteComponent</implementation>
+      <implementation>org.apache.maven.plugin.coreit.ConcreteTestComponent</implementation>
       <instantiation-strategy>singleton</instantiation-strategy>
     </component>
   </components>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-no-project/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-no-project/pom.xml
index bff50cf..176d046 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-no-project/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-no-project/pom.xml
@@ -42,7 +42,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-no-project/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-no-project/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
index 65757a7..cee2e79 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-no-project/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-no-project/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
@@ -21,6 +21,8 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -28,23 +30,19 @@
 
 /**
  * Mojo which touches a file without requiring a project.
- *
- * @goal light-touch
- * @requiresProject false
- *
  */
+@Mojo( name = "light-touch", requiresProject = false )
 public class NoProjectMojo
     extends AbstractMojo
 {
     /**
-     * @parameter default-value="${project.build.directory}"
-     * @required
      */
+    @Parameter( defaultValue = "${project.build.directory}", required = true )
     private String outputDirectory;
 
     /**
-     * @parameter default-value="target/test-basedir-alignment"
      */
+    @Parameter( defaultValue = "target/test-basedir-alignment" )
     private File basedirAlignmentDirectory;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-online/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-online/pom.xml
index 001e1f9..5a90c03 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-online/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-online/pom.xml
@@ -45,7 +45,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-online/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-online/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
index 2b4b3ef..4b79f0d 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-online/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-online/src/main/java/org/apache/maven/plugin/coreit/TouchMojo.java
@@ -21,6 +21,9 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.IOException;
@@ -28,21 +31,17 @@
 /**
  * Creates an empty file with a user-specified name. NOTE: This mojo requires online mode.
  *
- * @goal touch
- * @phase validate
- * @requiresOnline true
- *
  * @author Benjamin Bentmann
  */
+@Mojo( name = "touch", defaultPhase = LifecyclePhase.VALIDATE, requiresOnline = true )
 public class TouchMojo
     extends AbstractMojo
 {
 
     /**
      * The path to the output file.
-     *
-     * @parameter property="touch.outputFile" default-value="target/touch.txt"
      */
+    @Parameter( property = "touch.outputFile", defaultValue = "target/touch.txt" )
     private File outputFile;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-optional-mojos/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-optional-mojos/pom.xml
index 13efb54..a4d8fd5 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-optional-mojos/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-optional-mojos/pom.xml
@@ -45,7 +45,6 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>3.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-packaging/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-packaging/pom.xml
index 40971dc..60044e0 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-packaging/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-packaging/pom.xml
@@ -45,7 +45,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-packaging/src/main/java/org/apache/maven/plugin/coreit/AppendMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-packaging/src/main/java/org/apache/maven/plugin/coreit/AppendMojo.java
index 870a2df..a82e859 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-packaging/src/main/java/org/apache/maven/plugin/coreit/AppendMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-packaging/src/main/java/org/apache/maven/plugin/coreit/AppendMojo.java
@@ -21,6 +21,8 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -31,20 +33,20 @@
  * Appends a message to a UTF-8 encoded plain text file.
  *
  * @author Benjamin Bentmann
- * @goal append
- */
+  */
+@Mojo( name = "append" )
 public class AppendMojo
     extends AbstractMojo
 {
 
     /**
-     * @parameter property="append.message"
      */
+    @Parameter( property = "append.message" )
     private String message;
 
     /**
-     * @parameter default-value="${project.build.directory}/log.txt"
      */
+    @Parameter( defaultValue = "${project.build.directory}/log.txt" )
     private File outputFile;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-packaging/src/main/java/org/apache/maven/plugin/coreit/PackagingMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-packaging/src/main/java/org/apache/maven/plugin/coreit/PackagingMojo.java
index 59ffa0b..dea3921 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-packaging/src/main/java/org/apache/maven/plugin/coreit/PackagingMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-packaging/src/main/java/org/apache/maven/plugin/coreit/PackagingMojo.java
@@ -21,6 +21,8 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.IOException;
@@ -30,23 +32,20 @@
  *
  * @author <a href="brett@apache.org">Brett Porter</a>
  *
- * @goal package
- */
+  */
+@Mojo( name = "package" )
 public class PackagingMojo
     extends AbstractMojo
 {
 
     /**
-     * @parameter default-value="${project.build.finalName}"
-     * @required
      */
+    @Parameter( defaultValue = "${project.build.finalName}", required = true )
     private String finalName;
 
     /**
-     * @parameter default-value="${project.build.directory}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${project.build.directory}", required = true, readonly = true )
     private File outputDirectory;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/pom.xml
deleted file mode 100644
index 5fc723c..0000000
--- a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <artifactId>maven-it-plugins</artifactId>
-    <groupId>org.apache.maven.its.plugins</groupId>
-    <version>2.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>maven-it-plugin-parameter-implementation</artifactId>
-  <packaging>maven-plugin</packaging>
-
-  <name>Maven IT Plugin :: Parameter Implementation</name>
-  <inceptionYear>2006</inceptionYear>
-
-  <properties>
-    <maven.test.skip>true</maven.test.skip>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/AnInterface.java b/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/AnInterface.java
deleted file mode 100644
index ba45370..0000000
--- a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/AnInterface.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.apache.maven.plugin.coreit;
-
-/*
- * 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.
- */
-
-/**
- */
-public interface AnInterface
-{
-}
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/ParameterImplementationMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/ParameterImplementationMojo.java
deleted file mode 100644
index 75fb15f..0000000
--- a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/ParameterImplementationMojo.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.apache.maven.plugin.coreit;
-
-/*
- * 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.
- */
-
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-/**
- * Check that we correctly use the implementation parameter.
- *
- * @goal param-implementation
- */
-public class ParameterImplementationMojo
-    extends AbstractMojo
-{
-
-    /**
-     * The path to the properties file for the parameter information.
-     *
-     * @parameter
-     */
-    private File outputFile;
-
-    /**
-     * A parameter whose type is an interface but with a default implementation class.
-     *
-     * @parameter implementation="org.apache.maven.plugin.coreit.sub.AnImplementation"
-     */
-    private AnInterface theParameter;
-
-    public void execute()
-        throws MojoExecutionException
-    {
-        Properties props = new Properties();
-
-        if ( theParameter != null )
-        {
-            getLog().info( "[MAVEN-CORE-IT-LOG] theParameter = " + theParameter );
-
-            props.setProperty( "theParameter.class", theParameter.getClass().getName() );
-            props.setProperty( "theParameter.string", theParameter.toString() );
-        }
-
-        getLog().info( "[MAVEN-CORE-IT-LOG] Creating output file " + outputFile );
-
-        try
-        {
-            outputFile.getParentFile().mkdirs();
-
-            try ( FileOutputStream os = new FileOutputStream( outputFile ) )
-            {
-                props.store( os, "[MAVEN-CORE-IT-LOG]" );
-            }
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Failed to create output file " + outputFile + ": " + e.getMessage(), e );
-        }
-
-        getLog().info( "[MAVEN-CORE-IT-LOG] Created output file " + outputFile );
-    }
-
-}
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/sub/AnImplementation.java b/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/sub/AnImplementation.java
deleted file mode 100644
index 378d777..0000000
--- a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/main/java/org/apache/maven/plugin/coreit/sub/AnImplementation.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.apache.maven.plugin.coreit.sub;
-
-/*
- * 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.
- */
-
-import org.apache.maven.plugin.coreit.AnInterface;
-
-/**
- */
-public class AnImplementation
-    implements AnInterface
-{
-    private String field;
-
-    public String getField()
-    {
-        return field;
-    }
-
-    public void setField( String field )
-    {
-        this.field = field;
-    }
-
-    public String toString()
-    {
-        return getClass().getName() + "-" + field;
-    }
-}
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/site/site.xml b/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/site/site.xml
deleted file mode 100644
index 18f84c5..0000000
--- a/core-it-support/core-it-plugins/maven-it-plugin-parameter-implementation/src/site/site.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.3.0 http://maven.apache.org/xsd/decoration-1.3.0.xsd"
-  name="Plugins">
-  <body>
-
-    <menu name="Overview">
-      <item name="Introduction" href="index.html"/>
-      <item name="Goals" href="plugin-info.html"/>
-    </menu>
-
-  </body>
-</project>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plexus-component-api/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-plexus-component-api/pom.xml
index 780ec3e..bcd9ab5 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plexus-component-api/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plexus-component-api/pom.xml
@@ -43,7 +43,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plexus-component-api/src/main/java/org/apache/maven/its/plugins/VelocityMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-plexus-component-api/src/main/java/org/apache/maven/its/plugins/VelocityMojo.java
index fa1b403..2644bc6 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plexus-component-api/src/main/java/org/apache/maven/its/plugins/VelocityMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plexus-component-api/src/main/java/org/apache/maven/its/plugins/VelocityMojo.java
@@ -22,18 +22,20 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
 import org.codehaus.plexus.velocity.VelocityComponent;
 
 /**
- * @goal velocity
- * @phase validate
- */
+  */
+@Mojo( name = "velocity", defaultPhase = LifecyclePhase.VALIDATE )
 public class VelocityMojo
     extends AbstractMojo
 {
     /**
-     * @component
      */
+    @Component
     protected VelocityComponent velocityComponent;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plexus-lifecycle/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-plexus-lifecycle/pom.xml
index bbb3970..04d11b7 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plexus-lifecycle/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plexus-lifecycle/pom.xml
@@ -38,7 +38,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <!-- plexus -->
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plexus-lifecycle/src/main/java/org/apache/maven/its/plugins/plexuslifecycle/MojoWithPlexusLifecycle.java b/core-it-support/core-it-plugins/maven-it-plugin-plexus-lifecycle/src/main/java/org/apache/maven/its/plugins/plexuslifecycle/MojoWithPlexusLifecycle.java
index b9f3195..73e5a85 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plexus-lifecycle/src/main/java/org/apache/maven/its/plugins/plexuslifecycle/MojoWithPlexusLifecycle.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plexus-lifecycle/src/main/java/org/apache/maven/its/plugins/plexuslifecycle/MojoWithPlexusLifecycle.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
@@ -29,18 +32,15 @@
 
 /**
  * @author Olivier Lamy
- * @goal do-nothing
- * @phase validate
  */
+@Mojo( name = "do-nothing", defaultPhase = LifecyclePhase.VALIDATE )
 public class MojoWithPlexusLifecycle
     extends AbstractMojo
     implements Contextualizable, Disposable
 {
     /**
-     * @component
-     * @throws MojoExecutionException
-     * @throws MojoFailureException
      */
+    @Component
     private FakeComponent fakeComponent;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-11/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-11/pom.xml
index bda3d07..cb0317b 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-11/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-11/pom.xml
@@ -42,14 +42,12 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <scope>test</scope>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <scope>provided</scope>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-11/src/main/java/org/apache/maven/its/plugins/SerializeMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-11/src/main/java/org/apache/maven/its/plugins/SerializeMojo.java
index ffb5d6c..10170c8 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-11/src/main/java/org/apache/maven/its/plugins/SerializeMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-11/src/main/java/org/apache/maven/its/plugins/SerializeMojo.java
@@ -28,22 +28,24 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.pull.MXSerializer;
 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
 
 /**
- * @goal serialize
- * @phase validate
- */
+  */
+@Mojo( name = "serialize", defaultPhase = LifecyclePhase.VALIDATE )
 public class SerializeMojo
     extends AbstractMojo
 {
 
     /**
-     * @parameter default-value="${project.build.directory}/serialized.xml"
      */
+    @Parameter( defaultValue = "${project.build.directory}/serialized.xml" )
     private File file;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/pom.xml
index 0ba366a..85e0a8e 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/pom.xml
@@ -42,7 +42,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/src/main/java/org/apache/maven/its/plugins/SerializeMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/src/main/java/org/apache/maven/its/plugins/SerializeMojo.java
index 7627e1f..dcb4836 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/src/main/java/org/apache/maven/its/plugins/SerializeMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/src/main/java/org/apache/maven/its/plugins/SerializeMojo.java
@@ -29,21 +29,21 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.pull.MXSerializer;
 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
 
 /**
- * @goal serialize
- * @phase validate
- */
+  */
+@Mojo( name = "serialize", defaultPhase = LifecyclePhase.VALIDATE )
 public class SerializeMojo
     extends AbstractMojo
 {
 
-    /**
-     * @parameter default-value="${project.build.directory}/serialized.xml"
-     */
+    @Parameter( defaultValue = "${project.build.directory}/serialized.xml" )
     private File file;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plugin-dependency/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-plugin-dependency/pom.xml
index 6e90c89..5c64ef5 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plugin-dependency/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plugin-dependency/pom.xml
@@ -42,7 +42,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-plugin-dependency/src/main/java/org/apache/maven/plugin/coreit/DerivedItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-plugin-dependency/src/main/java/org/apache/maven/plugin/coreit/DerivedItMojo.java
index c7af358..8b34803 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-plugin-dependency/src/main/java/org/apache/maven/plugin/coreit/DerivedItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-plugin-dependency/src/main/java/org/apache/maven/plugin/coreit/DerivedItMojo.java
@@ -21,13 +21,15 @@
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 
 /**
- * @goal test
- * @phase process-sources
- */
+  */
+@Mojo( name = "test", defaultPhase = LifecyclePhase.PROCESS_SOURCES )
 public class DerivedItMojo
     extends EvalMojo
 {
@@ -35,9 +37,8 @@
      * The path to the output file for the properties with the expression values. For each expression given by the
      * parameter {@link #expressions}, a similar named properties key will be used to save the expression value. If an
      * expression evaluated to <code>null</code>, there will be no corresponding key in the properties file.
-     *
-     * @parameter
      */
+    @Parameter
     private File file;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/pom.xml
index c98341c..735e8ce 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/pom.xml
@@ -38,13 +38,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
     <!-- Test the resolution of the version -->
@@ -58,10 +61,6 @@
           <artifactId>maven-verifier</artifactId>
         </exclusion>
         <exclusion>
-          <groupId>org.apache.maven</groupId>
-          <artifactId>maven-artifact</artifactId>
-        </exclusion>
-        <exclusion>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
         </exclusion>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PluginParamInterpolationMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PluginParamInterpolationMojo.java
index 7e4c4eb..baef809 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PluginParamInterpolationMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PluginParamInterpolationMojo.java
@@ -23,28 +23,28 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 /**
- * @goal check-plugin
  *
- * @phase validate
  */
+@Mojo( name = "check-plugin", defaultPhase = LifecyclePhase.VALIDATE )
 public class PluginParamInterpolationMojo
     extends AbstractMojo
 {
     /**
      * myDirectory
-     *
-     * @parameter
      */
+    @Parameter
     private String myDirectory;
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
      */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PropertyInterpolationMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PropertyInterpolationMojo.java
index 3177fbf..071820d 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PropertyInterpolationMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PropertyInterpolationMojo.java
@@ -23,22 +23,23 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 /**
- * @goal check-property
  *
  * @phase validate
  */
+@Mojo( name = "check-property" )
 public class PropertyInterpolationMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
      */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PropertyInterpolationVerifierMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PropertyInterpolationVerifierMojo.java
index 5de48c0..5f69edc 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PropertyInterpolationVerifierMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-project-interpolation/src/main/java/org/apache/maven/plugin/coreit/PropertyInterpolationVerifierMojo.java
@@ -23,31 +23,31 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.util.Enumeration;
 import java.util.Properties;
 
 /**
- * @goal verify-property
- * @phase validate
- */
+  */
+@Mojo( name = "verify-property", defaultPhase = LifecyclePhase.VALIDATE )
 public class PropertyInterpolationVerifierMojo
     extends AbstractMojo
 {
 
     /**
      * The current Maven project.
-     *
-     * @parameter default-value="${project}"
      */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
     /**
      * The properties.
-     *
-     * @parameter property="properties"
      */
+    @Parameter( property = "clsldr.pluginClassLoaderOutput" )
     private Properties properties;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-project/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-project/pom.xml
index a99105c..8d5fdef 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-project/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-project/pom.xml
@@ -45,25 +45,31 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-core</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-model</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/AbstractPomMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/AbstractPomMojo.java
index ec5cf66..1b0ad34 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/AbstractPomMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/AbstractPomMojo.java
@@ -21,6 +21,7 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 
@@ -38,9 +39,8 @@
 
     /**
      * The project builder.
-     *
-     * @component
      */
+    @Component
     protected MavenProjectBuilder builder;
 
     protected void dump( Properties props, String key, MavenProject project )
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/BuildLocalPomMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/BuildLocalPomMojo.java
index 7f3ee92..2aac41c 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/BuildLocalPomMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/BuildLocalPomMojo.java
@@ -21,6 +21,8 @@
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -30,33 +32,29 @@
  * Builds the local POMs.
  *
  * @author Benjamin Bentmann
- * @goal local-pom
- */
+  */
+@Mojo( name = "local-pom" )
 public class BuildLocalPomMojo
     extends AbstractPomMojo
 {
 
     /**
      * The properties file to dump the POM info to.
-     *
-     * @parameter default-value="target/pom.properties"
      */
+    @Parameter( defaultValue = "target/pom.properties" )
     private File propertiesFile;
 
     /**
      * The local repository.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
     private ArtifactRepository localRepository;
 
     /**
      * The POM files to build.
      *
-     * @parameter
      */
+    @Parameter
     private File[] files;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/BuildRemotePomMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/BuildRemotePomMojo.java
index d2a455e..a7da046 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/BuildRemotePomMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-project/src/main/java/org/apache/maven/plugin/coreit/BuildRemotePomMojo.java
@@ -24,6 +24,9 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -35,49 +38,42 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal remote-pom
- */
+  */
+@Mojo( name = "remote-pom" )
 public class BuildRemotePomMojo
     extends AbstractPomMojo
 {
 
     /**
      * The properties file to dump the POM info to.
-     *
-     * @parameter default-value="target/pom.properties"
      */
+    @Parameter( defaultValue = "target/pom.properties" )
     private File propertiesFile;
 
     /**
      * The local repository.
-     *
-     * @parameter default-value="${localRepository}"
-     * @readonly
-     * @required
      */
+    @Parameter( defaultValue = "${localRepository}", readonly = true, required = true )
     private ArtifactRepository localRepository;
 
     /**
      * The remote repositories of the current Maven project.
-     *
-     * @parameter default-value="${project.remoteArtifactRepositories}"
-     * @readonly
-     * @required
      */
-    private List remoteRepositories;
+    @Parameter( defaultValue = "${project.remoteArtifactRepositories}", readonly = true, required = true )
+    private List<ArtifactRepository> remoteRepositories;
 
     /**
      * The artifact factory.
      *
-     * @component
      */
+    @Component
     private ArtifactFactory factory;
 
     /**
      * The dependencies to resolve.
      *
-     * @parameter
      */
+    @Parameter
     private Dependency[] dependencies;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-setter/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-setter/pom.xml
index 8897ce8..97f7fa3 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-setter/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-setter/pom.xml
@@ -44,7 +44,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-setter/src/main/java/org/apache/maven/plugin/coreit/CoreItMojoWithSetters.java b/core-it-support/core-it-plugins/maven-it-plugin-setter/src/main/java/org/apache/maven/plugin/coreit/CoreItMojoWithSetters.java
index 5c6c9dd..48f14aa 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-setter/src/main/java/org/apache/maven/plugin/coreit/CoreItMojoWithSetters.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-setter/src/main/java/org/apache/maven/plugin/coreit/CoreItMojoWithSetters.java
@@ -21,6 +21,8 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -28,25 +30,22 @@
 
 /**
  * Mojo to check that attribute injection through setter method (instead of direct parameter injection) works.
- * @goal setter-touch
  */
+@Mojo( name = "setter-touch" )
 public class CoreItMojoWithSetters
     extends AbstractMojo
 {
-    /**
-     * @parameter default-value="${project.build.directory}"
-     * @required
-     */
+    @Parameter( defaultValue = "${project.build.directory}", required = true )
     private String outputDirectoryValue;
 
     /**
-     * @parameter name="foo"
      */
+    @Parameter( name = "foo" )
     private String fooValue;
 
     /**
-     * @parameter
      */
+    @Parameter
     private String bar;
 
     // ----------------------------------------------------------------------
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-settings/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-settings/pom.xml
index 666b513..18b0a44 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-settings/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-settings/pom.xml
@@ -41,15 +41,22 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-settings</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
 
   </dependencies>
 </project>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-settings/src/main/java/org/apache/maven/plugin/coreit/SettingsReadItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-settings/src/main/java/org/apache/maven/plugin/coreit/SettingsReadItMojo.java
index 041eebe..5f55e70 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-settings/src/main/java/org/apache/maven/plugin/coreit/SettingsReadItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-settings/src/main/java/org/apache/maven/plugin/coreit/SettingsReadItMojo.java
@@ -21,6 +21,9 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
 
@@ -31,23 +34,15 @@
 /**
  * Goal which read settings and dump it to a file
  *
- * @goal settings-read
- * @phase validate
- */
+  */
+@Mojo( name = "settings-read", defaultPhase = LifecyclePhase.VALIDATE )
 public class SettingsReadItMojo
     extends AbstractMojo
 {
-    /**
-     * @parameter default-value="${settings}"
-     * @required
-     * @readonly
-     */
+    @Parameter( defaultValue = "${settings}", required = true, readonly = true )
     private Settings settings;
 
-    /**
-     * @parameter default-value="target/settings-dump.xml"
-     * @required
-     */
+    @Parameter( defaultValue = "target/settings-dump.xml", required = true )
     private File dumpFile;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/pom.xml
index 0f2f89c..0c79f3a 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/pom.xml
@@ -45,7 +45,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/Component.java b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/Component.java
deleted file mode 100644
index 3e4af15..0000000
--- a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/Component.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.apache.maven.plugin.coreit;
-
-/*
- * 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.
- */
-
-/**
- * A dummy component.
- *
- * @author Benjamin Bentmann
- */
-public interface Component
-{
-
-    String getId();
-
-}
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/DefaultComponent.java b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/DefaultComponent.java
index da9387f..1b790ff 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/DefaultComponent.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/DefaultComponent.java
@@ -26,9 +26,9 @@
  *
  * @author Benjamin Bentmann
  */
-@Component ( role = org.apache.maven.plugin.coreit.Component.class )
+@Component ( role = TestComponent.class )
 public class DefaultComponent
-    implements org.apache.maven.plugin.coreit.Component
+        implements TestComponent
 {
 
     private final String id;
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
index e58c2d1..95832f9 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/ItMojo.java
@@ -21,6 +21,10 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -34,47 +38,42 @@
  *
  * @author Benjamin Bentmann
  *
- * @goal it
- * @phase initialize
- */
+  */
+@Mojo( name = "it", defaultPhase = LifecyclePhase.INITIALIZE )
 public class ItMojo
     extends AbstractMojo
 {
 
     /**
      * The path to the output file.
-     *
-     * @parameter property="touch.outputFile" default-value="target/comp.properties"
      */
+    @Parameter( property = "touch.outputFile", defaultValue = "target/comp.properties" )
     private File outputFile;
 
     /**
      * Component lookup without role hint.
      *
-     * @component
      */
-    private Component componentWithoutRoleHint;
+    @Component
+    private TestComponent componentWithoutRoleHint;
 
     /**
      * Component lookup with explicit role hint.
-     *
-     * @component roleHint="default"
      */
-    private Component componentWithRoleHint;
+    @Component( hint = "default" )
+    private TestComponent componentWithRoleHint;
 
     /**
      * Component lookup via active map.
-     *
-     * @component role="org.apache.maven.plugin.coreit.Component"
      */
-    private Map componentMap;
+    @Component
+    private Map<String, TestComponent> componentMap;
 
     /**
      * Component lookup via active list.
-     *
-     * @component role="org.apache.maven.plugin.coreit.Component"
      */
-    private List componentList;
+    @Component
+    private List<TestComponent> componentList;
 
     /**
      * Runs this mojo.
@@ -84,8 +83,8 @@
     public void execute()
         throws MojoExecutionException
     {
-        Component componentFromMap = (Component) componentMap.values().iterator().next();
-        Component componentFromList = (Component) componentList.iterator().next();
+        TestComponent componentFromMap = (TestComponent) componentMap.values().iterator().next();
+        TestComponent componentFromList = (TestComponent) componentList.iterator().next();
 
         getLog().info( "[MAVEN-CORE-IT-LOG] Using component: " + componentWithoutRoleHint );
         getLog().info( "[MAVEN-CORE-IT-LOG] Using component: " + componentWithRoleHint );
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/Component.java b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
similarity index 96%
copy from core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/Component.java
copy to core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
index 3e4af15..de3256f 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-no-default-comp/src/main/java/org/apache/maven/plugin/coreit/Component.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/java/org/apache/maven/plugin/coreit/TestComponent.java
@@ -24,7 +24,7 @@
  *
  * @author Benjamin Bentmann
  */
-public interface Component
+public interface TestComponent
 {
 
     String getId();
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/resources/META-INF/plexus/components.xml b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/resources/META-INF/plexus/components.xml
index 5617ac7..4d3ec4f 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/resources/META-INF/plexus/components.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-singleton-component/src/main/resources/META-INF/plexus/components.xml
@@ -20,7 +20,7 @@
 <component-set>
   <components>
     <component>
-      <role>org.apache.maven.plugin.coreit.Component</role>
+      <role>org.apache.maven.plugin.coreit.TestComponent</role>
       <role-hint>default</role-hint>
       <implementation>org.apache.maven.plugin.coreit.DefaultComponent</implementation>
       <instantiation-strategy>singleton</instantiation-strategy>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-site/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-site/pom.xml
index 9f1eb97..110551e 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-site/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-site/pom.xml
@@ -45,7 +45,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -68,12 +72,6 @@
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-exec</artifactId>
       <version>1.6.0</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.maven</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-      </exclusions>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/GenerateMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/GenerateMojo.java
index 39c2996..25f6a56 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/GenerateMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/GenerateMojo.java
@@ -23,6 +23,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.reporting.MavenReport;
 
 import java.io.File;
@@ -36,43 +39,34 @@
  * Generates the available/configured reports.
  *
  * @author Benjamin Bentmann
- *
- * @goal generate
- * @phase site
- * @requiresReports true
  */
+@Mojo( name = "generate", defaultPhase = LifecyclePhase.SITE, requiresReports = true )
 public class GenerateMojo
     extends AbstractMojo
 {
 
     /**
      * The path to the output directory of the site.
-     *
-     * @parameter default-value="${project.reporting.outputDirectory}"
      */
+    @Parameter( defaultValue = "${project.reporting.outputDirectory}" )
     private File outputDirectory;
 
     /**
      * The language for the reports.
-     *
-     * @parameter default-value="en"
      */
+    @Parameter( defaultValue = "en" )
     private String language = "en";
 
     /**
      * A flag whether to ignore errors from reports and continue the generation.
-     *
-     * @parameter default-value="false"
      */
+    @Parameter( defaultValue = "false" )
     private boolean ignoreErrors;
 
     /**
      * The reports configured for the current build.
-     *
-     * @parameter default-value="${reports}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${reports}", required = true, readonly = true )
     private List reports;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/InfoReport.java b/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/InfoReport.java
index fce5b9f..d6df5fb 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/InfoReport.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/InfoReport.java
@@ -23,6 +23,7 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.reporting.MavenReportException;
 
@@ -48,27 +49,22 @@
 
     /**
      * The base directory of the current Maven project.
-     *
-     * @parameter default-value="${basedir}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", required = true, readonly = true )
     private File basedir;
 
     /**
      * The path to the properties file, relative to the output directory of the site. The keys
      * <code>locale.language</code>, <code>locale.country</code> and <code>locale.variant</code> indicate the report's
      * locale.
-     *
-     * @parameter default-value="info.properties"
      */
+    @Parameter( defaultValue = "info.properties" )
     private String infoFile = "info.properties";
 
     /**
      * The path to the output directory of the site.
-     *
-     * @parameter default-value="${project.reporting.outputDirectory}"
      */
+    @Parameter( defaultValue = "${project.reporting.outputDirectory}" )
     private File outputDirectory;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/ListMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/ListMojo.java
index 5554e7b..13b7a0d 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/ListMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-site/src/main/java/org/apache/maven/plugin/coreit/ListMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -33,13 +36,10 @@
 /**
  * Lists the available/configured reports in a properties file.
  *
- * @goal list
- * @phase initialize
- * @requiresReports true
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "list", defaultPhase = LifecyclePhase.INITIALIZE, requiresReports = true )
 public class ListMojo
     extends AbstractMojo
 {
@@ -48,19 +48,15 @@
      * The path to the properties file used to list the available reports. The properties file will have a key named
      * <code>reports</code> that gives the total count of reports. The keys <code>reports.0</code>,
      * <code>reports.1</code> etc. will be used to denote the qualified class names of the reports.
-     *
-     * @parameter property="site.properties" default-value="target/reports.properties"
      */
+    @Parameter( property = "site.properties", defaultValue = "target/reports.properties" )
     private File reportsFile;
 
     /**
      * The reports configured for the current build.
-     *
-     * @parameter default-value="${reports}"
-     * @required
-     * @readonly
      */
-    private List reports;
+    @Parameter( defaultValue = "${reports}", required = true, readonly = true )
+    private List<?> reports;
 
     /**
      * Runs this mojo.
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-toolchain/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-toolchain/pom.xml
index 38a1029..e30c06c 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-toolchain/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-toolchain/pom.xml
@@ -37,13 +37,16 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-toolchain</artifactId>
-      <version>2.0.10</version>
+      <artifactId>maven-core</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
index 7fa4452..d5c7c3c 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
@@ -22,6 +22,10 @@
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.toolchain.ToolchainManagerPrivate;
 import org.apache.maven.toolchain.ToolchainPrivate;
 
@@ -36,53 +40,45 @@
 import java.util.Properties;
 
 /**
- * @goal toolchain
- * @phase validate
- */
+  */
+@Mojo( name = "toolchain", defaultPhase = LifecyclePhase.VALIDATE )
 public class CoreItMojo
     extends AbstractMojo
 {
 
     /**
-     * @component
      */
+    @Component
     private ToolchainManagerPrivate toolchainManager;
 
     /**
      * The current Maven session holding the selected toolchain.
-     *
-     * @parameter default-value="${session}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${session}", readonly = true, required = true )
     private MavenSession session;
 
     /**
      * The path to the output file for the properties.
-     *
-     * @parameter property="toolchain.outputFile" default-value="${project.build.directory}/toolchains.properties"
      */
+    @Parameter( property = "toolchain.outputFile", defaultValue = "${project.build.directory}/toolchains.properties" )
     private File outputFile;
 
     /**
      * The type identifier of the toolchain, e.g. "jdk".
-     *
-     * @parameter property="toolchain.type"
      */
+    @Parameter( property = "toolchain.type" )
     private String type;
 
     /**
      * The name of the tool, e.g. "javac".
-     *
-     * @parameter property="toolchain.tool"
      */
+    @Parameter( property = "toolchain.tool" )
     private String tool;
 
     /**
      * The zero-based index of the toolchain to select and store in the build context.
-     *
-     * @parameter property="toolchain.selected"
      */
+    @Parameter( property = "toolchain.selected" )
     private int selected;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java
index 651fec9..d92615e 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java
@@ -28,6 +28,10 @@
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.toolchain.Toolchain;
 import org.apache.maven.toolchain.ToolchainManager;
 
@@ -35,46 +39,39 @@
  * Finds a tool from a previously selected toolchain. This tests the public API just like toolchain-enabled plugins
  * would do.
  *
- * @goal find-tool
- * @phase validate
- */
+  */
+@Mojo( name = "find-tool", defaultPhase = LifecyclePhase.VALIDATE )
 public class FindToolMojo
     extends AbstractMojo
 {
 
     /**
-     * @component
      */
+    @Component
     private ToolchainManager toolchainManager;
 
     /**
      * The current Maven session holding the selected toolchain.
-     *
-     * @parameter default-value="${session}"
-     * @required
-     * @readonly
      */
+    @Parameter( defaultValue = "${session}", required = true, readonly = true )
     private MavenSession session;
 
     /**
      * The path to the output file for the properties.
-     *
-     * @parameter property="toolchain.outputFile" default-value="${project.build.directory}/tool.properties"
      */
+    @Parameter( property = "toolchain.outputFile", defaultValue = "${project.build.directory}/tool.properties" )
     private File outputFile;
 
     /**
      * The type identifier of the toolchain, e.g. "jdk".
-     *
-     * @parameter property="toolchain.type"
      */
+    @Parameter( property = "toolchain.type" )
     private String type;
 
     /**
      * The name of the tool, e.g. "javac".
-     *
-     * @parameter property="toolchain.tool"
      */
+    @Parameter( property = "toolchain.tool" )
     private String tool;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-touch/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-touch/pom.xml
index 4457463..d39cf33 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-touch/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-touch/pom.xml
@@ -39,25 +39,27 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-archiver</artifactId>
-      <version>2.0</version>
+      <version>3.6.0</version>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-touch/src/main/java/org/apache/maven/plugin/coreit/CopyPomMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-touch/src/main/java/org/apache/maven/plugin/coreit/CopyPomMojo.java
index eddef2b..afc6eec 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-touch/src/main/java/org/apache/maven/plugin/coreit/CopyPomMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-touch/src/main/java/org/apache/maven/plugin/coreit/CopyPomMojo.java
@@ -21,6 +21,9 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -30,21 +33,19 @@
 /**
  * Mojo which makes a copy of the POM using MavenProject.getFile() to locate the file.
  *
- * @goal copy-pom
- * @phase generate-sources
- */
+  */
+@Mojo( name = "copy-pom", defaultPhase = LifecyclePhase.GENERATE_SOURCES )
 public class CopyPomMojo
     extends AbstractMojo
 {
     /**
-     * @parameter default-value="${project.file}"
      */
+    @Parameter( defaultValue = "${project.file}" )
     private File pomFile;
 
     /**
-     * @parameter default-value="${project.build.directory}/pom-copy.xml"
-     * @required
      */
+    @Parameter( defaultValue = "${project.build.directory}/pom-copy.xml", required = true )
     private String outputFile;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-touch/src/main/java/org/apache/maven/plugin/coreit/CoreItTouchMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-touch/src/main/java/org/apache/maven/plugin/coreit/CoreItTouchMojo.java
index 708685f..8ad9c76 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-touch/src/main/java/org/apache/maven/plugin/coreit/CoreItTouchMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-touch/src/main/java/org/apache/maven/plugin/coreit/CoreItTouchMojo.java
@@ -22,6 +22,9 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -33,64 +36,54 @@
  * Mojo that creates one <code>touch.txt</code> or more files with configured filenames in <code>target/</code>
  * directory, or cause failure if desired, and set build final name to '<code>coreitified</code>'
  *
- * @goal touch
- * @phase process-sources
- */
+  */
+@Mojo( name = "touch", defaultPhase = LifecyclePhase.PROCESS_SOURCES )
 public class CoreItTouchMojo
     extends AbstractMojo
 {
-    /**
-     * @parameter default-value="${project}"
-     */
+    @Parameter( defaultValue = "${project}" )
     private MavenProject project;
 
     /**
      * Output directory for touched files.
-     *
-     * @parameter default-value="${project.build.directory}"
-     * @required
      */
+    @Parameter( defaultValue = "${project.build.directory}", required = true )
     private String outputDirectory;
 
     /**
      * Test setting of plugin-artifacts on the PluginDescriptor instance.
-     *
-     * @parameter default-value="${plugin.artifactMap}"
-     * @required
      */
+    @Parameter( defaultValue = "${plugin.artifactMap}", required = true )
     private Map<String, Artifact> pluginArtifacts;
 
     /**
      * Parameter to check that File attribute is injected with absolute path, even if parameter
      * value is relative: a <code>touch.txt</code> file will be created in specified directory, to be able
      * to check that absolute value is at right place.
-     *
-     * @parameter default-value="target/test-basedir-alignment"
      */
+    @Parameter( defaultValue = "target/test-basedir-alignment" )
     private File basedirAlignmentDirectory;
 
     /**
-     * @parameter alias="pluginFile"
      */
+    @Parameter( alias = "pluginFile" )
     private String pluginItem = "foo";
 
     /**
-     * @parameter
      */
+    @Parameter
     private String goalItem = "bar";
 
     /**
      * Touch a file named after artifact absolute file name, replacing '/' and ':' by '_' and adding ".txt".
-     *
-     * @parameter property="artifactToFile"
      */
+    @Parameter( property = "artifactToFile" )
     private String artifactToFile;
 
     /**
      * Should the goal cause a failure before doing anything else?
-     *
-     * @parameter property="fail"
      */
+    @Parameter( property = "fail" )
     private boolean fail = false;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-uses-properties/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-uses-properties/pom.xml
index eeaca5b..d1a13c1 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-uses-properties/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-uses-properties/pom.xml
@@ -42,7 +42,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-uses-properties/src/main/java/org/apache/maven/plugin/coreit/UsesPropertiesMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-uses-properties/src/main/java/org/apache/maven/plugin/coreit/UsesPropertiesMojo.java
index 6b67aa0..0bb5e13 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-uses-properties/src/main/java/org/apache/maven/plugin/coreit/UsesPropertiesMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-uses-properties/src/main/java/org/apache/maven/plugin/coreit/UsesPropertiesMojo.java
@@ -21,26 +21,28 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.util.Properties;
 import java.io.FileOutputStream;
 import java.io.File;
 
 /**
- * @goal generate-properties
- * @phase validate
  */
+@Mojo( name = "generate-properties", defaultPhase = LifecyclePhase.VALIDATE )
 public class UsesPropertiesMojo
     extends AbstractMojo
 {
     /**
-     * @parameter default-value="${basedir}"
      */
+    @Parameter( defaultValue = "${basedir}" )
     private File basedir;
 
     /**
-     * @parameter default-value="${project.properties}"
      */
+    @Parameter( defaultValue = "${project.properties}" )
     private Properties properties;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/pom.xml b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/pom.xml
index c763923..0f2240b 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/pom.xml
+++ b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/pom.xml
@@ -38,24 +38,17 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact-manager</artifactId>
-      <version>2.0.9</version>
+      <artifactId>maven-compat</artifactId>
       <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.codehaus.plexus</groupId>
-          <artifactId>plexus-utils</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>junit</groupId>
-          <artifactId>junit</artifactId>
-        </exclusion>
-      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/DumpAuthMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/DumpAuthMojo.java
index eb829e2..d355556 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/DumpAuthMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/DumpAuthMojo.java
@@ -23,6 +23,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 
 import java.io.File;
@@ -35,41 +39,34 @@
  * Dumps the authentication info registered with the wagon manager for a server to a properties file.
  *
  * @author Benjamin Bentmann
- *
- * @goal dump-auth
- * @phase validate
  */
+@Mojo( name = "dump-auth", defaultPhase = LifecyclePhase.VALIDATE )
 public class DumpAuthMojo
     extends AbstractMojo
 {
 
     /**
      * Project base directory used for manual path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The Wagon manager used to retrieve authentication infos.
-     *
-     * @component
      */
+    @Component
     private WagonManager wagonManager;
 
     /**
      * The path to the properties file used to dump the auth infos.
-     *
-     * @parameter property="wagon.propertiesFile"
      */
+    @Parameter( property = "wagon.propertiesFile" )
     private File propertiesFile;
 
     /**
      * The set of server identifiers whose auth infos should be dumped.
-     *
-     * @parameter
      */
+    @Parameter
     private String[] serverIds;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/DumpVersionMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/DumpVersionMojo.java
index ebb8395..2270ea5 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/DumpVersionMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/DumpVersionMojo.java
@@ -22,6 +22,10 @@
 import org.apache.maven.artifact.manager.WagonManager;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -33,56 +37,47 @@
 /**
  * Dumps the version info for a wagon provider to a properties file.
  *
- * @goal dump-version
- * @phase validate
- *
  * @author Benjamin Bentmann
  */
+@Mojo( name = "dump-version", defaultPhase = LifecyclePhase.VALIDATE )
 public class DumpVersionMojo
     extends AbstractMojo
 {
 
     /**
      * Project base directory used for manual path alignment.
-     *
-     * @parameter default-value="${basedir}"
-     * @readonly
      */
+    @Parameter( defaultValue = "${basedir}", readonly = true )
     private File basedir;
 
     /**
      * The Wagon manager used to look up the wagon of interest.
-     *
-     * @component
      */
+    @Component
     private WagonManager wagonManager;
 
     /**
      * The path to the properties file used to dump the auth infos.
-     *
-     * @parameter property="wagon.propertiesFile"
      */
+    @Parameter( property = "wagon.propertiesFile" )
     private File propertiesFile;
 
     /**
      * The role hint for the provider of interest.
-     *
-     * @parameter property="wagon.providerHint"
      */
+    @Parameter( property = "wagon.providerHint" )
     private String providerHint;
 
     /**
      * The group id for the provider of interest.
-     *
-     * @parameter property="wagon.providerGroupId"
      */
+    @Parameter( property = "wagon.providerGroupId" )
     private String providerGroupId;
 
     /**
      * The artifact id for the provider of interest.
-     *
-     * @parameter property="wagon.providerArtifactId"
      */
+    @Parameter( property = "wagon.providerArtifactId" )
     private String providerArtifactId;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/LoadResourceMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/LoadResourceMojo.java
index 4b140a3..96148d9 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/LoadResourceMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/LoadResourceMojo.java
@@ -23,6 +23,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.wagon.repository.Repository;
 
 import java.io.File;
@@ -39,41 +43,35 @@
  * class loader it came from which is otherwise not accessible to a plugin.
  *
  * @author Benjamin Bentmann
- *
- * @goal load-resource
- * @phase validate
  */
+@Mojo( name = "load-resource", defaultPhase = LifecyclePhase.VALIDATE )
 public class LoadResourceMojo
     extends AbstractMojo
 {
 
     /**
      * The Wagon manager used to retrieve wagon providers.
-     *
-     * @component
      */
+    @Component
     private WagonManager wagonManager;
 
     /**
      * The path to the properties file used to track the results of the resource loading via the wagon's class loader.
-     *
-     * @parameter property="wagon.wagonClassLoaderOutput"
      */
+    @Parameter( property = "wagon.wagonClassLoaderOutput" )
     private File wagonClassLoaderOutput;
 
     /**
      * The role hint for the wagon provider to load. The class loader of this provider will be used to load the
      * resources.
-     *
-     * @parameter property="wagon.wagonProtocol"
      */
+    @Parameter( property = "wagon.wagonProtocol" )
     private String wagonProtocol;
 
     /**
      * The repository to load the wagon for, if applicable.
-     *
-     * @parameter property="wagon.repositoryId"
      */
+    @Parameter( property = "wagon.repositoryId" )
     private String repositoryId;
 
     /**
@@ -81,9 +79,8 @@
      * loaded, the generated properties files will contain a key named <code>ARP</code> whose value gives the URL to the
      * resource. In addition, the keys <code>ARP.count</code>, <code>ARP.0</code>, <code>ARP.1</code> etc. will
      * enumerate all URLs matching the resource name.
-     *
-     * @parameter
      */
+    @Parameter
     private String[] resourcePaths;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/LookupWagonMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/LookupWagonMojo.java
index 6cc3311..0d1bd50 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/LookupWagonMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/LookupWagonMojo.java
@@ -23,6 +23,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.repository.Repository;
 
@@ -36,35 +40,30 @@
  * Loads resources from a class loader used to load a wagon provider. The wagon is merely used to access the extension
  * class loader it came from which is otherwise not accessible to a plugin.
  *
- * @goal lookup-wagon
- * @phase validate
- *
  * @author Benjamin Bentmann
  *
  */
+@Mojo( name = "lookup-wagon", defaultPhase = LifecyclePhase.VALIDATE )
 public class LookupWagonMojo
     extends AbstractMojo
 {
 
     /**
      * The Wagon manager used to retrieve wagon providers.
-     *
-     * @component
      */
+    @Component
     private WagonManager wagonManager;
 
     /**
      * The path to the properties file used to track the results of the wagon lookups.
-     *
-     * @parameter property="wagon.outputFile"
      */
+    @Parameter( property = "wagon.outputFile" )
     private File outputFile;
 
     /**
      * The URLs for which to look up wagons.
-     *
-     * @parameter
      */
+    @Parameter
     private String[] urls;
 
     /**
diff --git a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/UsesWagonMojo.java b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/UsesWagonMojo.java
index a481322..064dacc 100644
--- a/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/UsesWagonMojo.java
+++ b/core-it-support/core-it-plugins/maven-it-plugin-uses-wagon/src/main/java/org/apache/maven/plugin/coreit/UsesWagonMojo.java
@@ -22,21 +22,23 @@
 import org.apache.maven.artifact.manager.WagonManager;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.providers.file.FileWagon;
 import org.apache.maven.wagon.providers.ssh.jsch.ScpWagon;
 
 /**
- * @goal use-wagon
- * @phase validate
  */
+@Mojo( name = "use-wagon", defaultPhase = LifecyclePhase.VALIDATE )
 public class UsesWagonMojo
     extends AbstractMojo
 {
 
     /**
-     * @component
      */
+    @Component
     private WagonManager wagonManager;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/mng5805-plugin/pom.xml b/core-it-support/core-it-plugins/mng5805-plugin/pom.xml
index c24f9aa..cfe7bbc 100644
--- a/core-it-support/core-it-plugins/mng5805-plugin/pom.xml
+++ b/core-it-support/core-it-plugins/mng5805-plugin/pom.xml
@@ -32,23 +32,22 @@
   <artifactId>mng-5805-pkg-type-mojo-configuration-plugin</artifactId>
   <packaging>maven-plugin</packaging>
 
-  <properties>
-    <maven-version>3.0</maven-version>
-  </properties>
-
   <name>Maven IT Plugin :: mng-5805 plugin</name>
 
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>${maven-version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-model</artifactId>
-      <version>${maven-version}</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/mng5805-plugin/src/main/java/org/apache/maven/its/mng5805/plugin/TestMojo.java b/core-it-support/core-it-plugins/mng5805-plugin/src/main/java/org/apache/maven/its/mng5805/plugin/TestMojo.java
index a3a36ee..c9f4b6b 100644
--- a/core-it-support/core-it-plugins/mng5805-plugin/src/main/java/org/apache/maven/its/mng5805/plugin/TestMojo.java
+++ b/core-it-support/core-it-plugins/mng5805-plugin/src/main/java/org/apache/maven/its/mng5805/plugin/TestMojo.java
@@ -21,16 +21,18 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
 
 /**
- * @goal test
- */
+  */
+@Mojo( name = "test" )
 public class TestMojo
     extends AbstractMojo
 {
     /**
-     * @parameter default-value="org.apache.maven.its.mng5805.DoesNotExist"
      */
+    @Parameter( defaultValue = "org.apache.maven.its.mng5805.DoesNotExist" )
     private String className;
 
     public void execute()
diff --git a/core-it-support/core-it-plugins/mng5958-extension/pom.xml b/core-it-support/core-it-plugins/mng5958-extension/pom.xml
index 1bd85d2..beec4cf 100644
--- a/core-it-support/core-it-plugins/mng5958-extension/pom.xml
+++ b/core-it-support/core-it-plugins/mng5958-extension/pom.xml
@@ -38,7 +38,6 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.3.9</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/mng6759-plugin-resolves-project-dependencies/pom.xml b/core-it-support/core-it-plugins/mng6759-plugin-resolves-project-dependencies/pom.xml
index 57e8b11..f6b0bb0 100644
--- a/core-it-support/core-it-plugins/mng6759-plugin-resolves-project-dependencies/pom.xml
+++ b/core-it-support/core-it-plugins/mng6759-plugin-resolves-project-dependencies/pom.xml
@@ -32,10 +32,6 @@
   <artifactId>mng-6759-resolves-project-dependencies-plugin</artifactId>
   <packaging>maven-plugin</packaging>
 
-  <properties>
-    <maven-version>3.0</maven-version>
-  </properties>
-
   <name>Maven IT Plugin :: mng-6759 plugin</name>
 
   <dependencies>
@@ -47,7 +43,6 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>${maven-version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -58,13 +53,11 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>${maven-version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-model</artifactId>
-      <version>${maven-version}</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/core-it-support/core-it-plugins/pom.xml b/core-it-support/core-it-plugins/pom.xml
index 2bcf95a..40ed164 100644
--- a/core-it-support/core-it-plugins/pom.xml
+++ b/core-it-support/core-it-plugins/pom.xml
@@ -58,7 +58,6 @@
     <module>maven-it-plugin-online</module>
     <module>maven-it-plugin-optional-mojos</module>
     <module>maven-it-plugin-packaging</module>
-    <module>maven-it-plugin-parameter-implementation</module>
     <module>maven-it-plugin-plugin-dependency</module>
     <module>maven-it-plugin-project</module>
     <module>maven-it-plugin-project-interpolation</module>
@@ -113,4 +112,5 @@
       </plugin>
     </plugins>
   </reporting>
+
 </project>
diff --git a/core-it-support/core-it-support-artifacts/pom.xml b/core-it-support/core-it-support-artifacts/pom.xml
index 17429a7..1b9115f 100644
--- a/core-it-support/core-it-support-artifacts/pom.xml
+++ b/core-it-support/core-it-support-artifacts/pom.xml
@@ -37,7 +37,7 @@
     <plugins>
       <plugin>
         <artifactId>maven-assembly-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.4.0</version>
         <configuration>
           <descriptors>
             <descriptor>src/main/assembly/repo.xml</descriptor>
diff --git a/core-it-support/core-it-toolchain/pom.xml b/core-it-support/core-it-toolchain/pom.xml
index 30ba507..9b4cb7b 100644
--- a/core-it-support/core-it-toolchain/pom.xml
+++ b/core-it-support/core-it-toolchain/pom.xml
@@ -35,8 +35,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-toolchain</artifactId>
-      <version>2.0.10</version>
+      <artifactId>maven-core</artifactId>
     </dependency>
   </dependencies>
 </project>
diff --git a/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/AbstractMavenIntegrationTestCase.java b/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/AbstractMavenIntegrationTestCase.java
index 515330a..5434e1a 100644
--- a/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/AbstractMavenIntegrationTestCase.java
+++ b/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/AbstractMavenIntegrationTestCase.java
@@ -608,16 +608,16 @@
             // Java9 requires at least 1.6
             if ( VersionRange.createFromVersionSpec( "[9,12)" ).containsVersion( getJavaVersion() ) )
             {
-                verifier.getSystemProperties().put( "maven.compiler.source", "1.7" );
-                verifier.getSystemProperties().put( "maven.compiler.target", "1.7" );
-                verifier.getSystemProperties().put( "maven.compiler.release", "7" );
+                verifier.getSystemProperties().put( "maven.compiler.source", "1.8" );
+                verifier.getSystemProperties().put( "maven.compiler.target", "1.8" );
+                verifier.getSystemProperties().put( "maven.compiler.release", "8" );
             }
             // Java12 requires at least 7
             if ( VersionRange.createFromVersionSpec( "[12,)" ).containsVersion( getJavaVersion() ) )
             {
-                verifier.getSystemProperties().put( "maven.compiler.source", "7" );
-                verifier.getSystemProperties().put( "maven.compiler.target", "7" );
-                verifier.getSystemProperties().put( "maven.compiler.release", "7" );
+                verifier.getSystemProperties().put( "maven.compiler.source", "8" );
+                verifier.getSystemProperties().put( "maven.compiler.target", "8" );
+                verifier.getSystemProperties().put( "maven.compiler.release", "8" );
             }
         }
         catch ( InvalidVersionSpecificationException e )
diff --git a/core-it-support/maven-it-plugin-bootstrap/pom.xml b/core-it-support/maven-it-plugin-bootstrap/pom.xml
index 36e035c..6f08db4 100644
--- a/core-it-support/maven-it-plugin-bootstrap/pom.xml
+++ b/core-it-support/maven-it-plugin-bootstrap/pom.xml
@@ -33,7 +33,6 @@
   <name>Bootstrap plugin</name>
 
   <properties>
-    <mavenVersion>3.8.6</mavenVersion>
     <mavenResolverVersion>1.8.1</mavenResolverVersion>
   </properties>
 
@@ -41,24 +40,27 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>${mavenVersion}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>${mavenVersion}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.plugin-tools</groupId>
       <artifactId>maven-plugin-annotations</artifactId>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.resolver</groupId>
       <artifactId>maven-resolver-impl</artifactId>
       <version>${mavenResolverVersion}</version>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
   </dependencies>
 
 </project>
diff --git a/pom.xml b/pom.xml
index de8fc4b..f811a72 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven-parent</artifactId>
-    <version>34</version>
+    <version>36</version>
     <relativePath>../pom/maven/pom.xml</relativePath>
   </parent>
 
@@ -70,6 +70,9 @@
     <rat.ignoreErrors>true</rat.ignoreErrors>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
+
+    <maven-version>3.8.6</maven-version>
+    <maven-plugin-tools-version>3.6.4</maven-plugin-tools-version>
   </properties>
 
   <modules>
@@ -80,6 +83,41 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-plugin-api</artifactId>
+        <version>${maven-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-artifact</artifactId>
+        <version>${maven-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-settings</artifactId>
+        <version>${maven-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-compat</artifactId>
+        <version>${maven-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-core</artifactId>
+        <version>${maven-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-model</artifactId>
+        <version>${maven-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-repository-metadata</artifactId>
+        <version>${maven-version}</version>
+      </dependency>
+      <dependency>
         <groupId>org.apache.maven.shared</groupId>
         <artifactId>maven-verifier</artifactId>
         <version>2.0.0-M1</version>
@@ -89,6 +127,11 @@
         <artifactId>junit-jupiter</artifactId>
         <version>5.8.0</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.maven.plugin-tools</groupId>
+        <artifactId>maven-plugin-tools-java</artifactId>
+        <version>${maven-plugin-tools-version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 
@@ -207,7 +250,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-plugin-plugin</artifactId>
-          <version>3.6.4</version>
+          <version>${maven-plugin-tools-version}</version>
         </plugin>
       </plugins>
     </pluginManagement>