Add maven-wrapper-plugin to ITs verifying require-plugin-versions rule
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
index c96793b..b06e723 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
@@ -42,9 +42,9 @@
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.lifecycle.DefaultLifecycles;
 import org.apache.maven.lifecycle.Lifecycle;
 import org.apache.maven.lifecycle.LifecycleExecutionException;
-import org.apache.maven.lifecycle.LifecycleExecutor;
 import org.apache.maven.lifecycle.mapping.LifecycleMapping;
 import org.apache.maven.model.BuildBase;
 import org.apache.maven.model.Model;
@@ -66,7 +66,6 @@
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.util.ReflectionUtils;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
@@ -194,12 +193,9 @@
             // get the various expressions out of the helper.
 
             project = (MavenProject) helper.evaluate( "${project}" );
-            LifecycleExecutor life;
-            life = helper.getComponent( LifecycleExecutor.class );
 
-            Object defaultLifeCycles = ReflectionUtils.getValueIncludingSuperclasses( "defaultLifeCycles", life );
-            Map lifecyclesMap = (Map) ReflectionUtils.getValueIncludingSuperclasses( "lifecycles", defaultLifeCycles );
-            lifecycles = lifecyclesMap.values();
+            DefaultLifecycles defaultLifeCycles = helper.getComponent( DefaultLifecycles.class );
+            lifecycles = defaultLifeCycles.getLifeCycles();
 
             session = (MavenSession) helper.evaluate( "${session}" );
             pluginManager = helper.getComponent( PluginManager.class );
@@ -211,7 +207,7 @@
             utils = new EnforcerRuleUtils( helper );
 
             // get all the plugins that are bound to the specified lifecycles
-            Set<Plugin> allPlugins = getBoundPlugins( life, project, phases );
+            Set<Plugin> allPlugins = getBoundPlugins( project, phases );
 
             // insert any additional plugins specified by the user.
             allPlugins = addAdditionalPlugins( allPlugins, additionalPlugins );
@@ -267,7 +263,7 @@
         }
         catch ( Exception e )
         {
-            throw new EnforcerRuleException( e.getLocalizedMessage() );
+            throw new EnforcerRuleException( e.getLocalizedMessage(), e );
         }
     }
 
@@ -551,7 +547,7 @@
      * @throws LifecycleExecutionException the lifecycle execution exception
      * @throws IllegalAccessException the illegal access exception
      */
-    protected Set<Plugin> getBoundPlugins( LifecycleExecutor life, MavenProject project, String thePhases )
+    protected Set<Plugin> getBoundPlugins( MavenProject project, String thePhases )
         throws PluginNotFoundException, LifecycleExecutionException, IllegalAccessException
     {
 
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
index 9a45741..c4c27b6 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
@@ -61,6 +61,8 @@
         assertThat( RequireJavaVersion.normalizeJDKVersion( "1.6.0-dp2" ) ).isEqualTo( "1.6.0-2" );
         assertThat( RequireJavaVersion.normalizeJDKVersion( "1.8.0_73" ) ).isEqualTo( "1.8.0-73" );
         assertThat( RequireJavaVersion.normalizeJDKVersion( "9" ) ).isEqualTo( "9" );
+        
+        assertThat( RequireJavaVersion.normalizeJDKVersion( "17" ) ).isEqualTo( "17" );
 
     }
 
diff --git a/maven-enforcer-plugin/src/it/projects/MENFORCER-306/parent/pom.xml b/maven-enforcer-plugin/src/it/projects/MENFORCER-306/parent/pom.xml
index d66827e..cdfd4c2 100644
--- a/maven-enforcer-plugin/src/it/projects/MENFORCER-306/parent/pom.xml
+++ b/maven-enforcer-plugin/src/it/projects/MENFORCER-306/parent/pom.xml
@@ -97,6 +97,11 @@
           <artifactId>maven-resources-plugin</artifactId>

           <version>3.1.0</version>

         </plugin>

+        <plugin>

+          <groupId>org.apache.maven.plugins</groupId>

+          <artifactId>maven-wrapper-plugin</artifactId>

+          <version>3.0.1</version>

+        </plugin>

       </plugins>

     </pluginManagement>

   </build>

diff --git a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-custom-packaging/pom.xml b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-custom-packaging/pom.xml
index 9a82bfa..52b1f5f 100644
--- a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-custom-packaging/pom.xml
+++ b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-custom-packaging/pom.xml
@@ -59,7 +59,8 @@
                     org.apache.maven.plugins:maven-site-plugin,
                     org.apache.maven.plugins:maven-resources-plugin,
                     org.apache.maven.plugins:maven-compiler-plugin,
-                    org.apache.maven.plugins:maven-surefire-plugin
+                    org.apache.maven.plugins:maven-surefire-plugin,
+                    org.apache.maven.plugins:maven-wrapper-plugin
                   </unCheckedPluginList>
                 </requirePluginVersions>
               </rules>
diff --git a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml
index 33321a9..487b348 100644
--- a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml
+++ b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml
@@ -74,6 +74,11 @@
           <version>3.2</version>

         </plugin>

         <plugin>

+          <groupId>org.apache.maven.plugins</groupId>

+          <artifactId>maven-wrapper-plugin</artifactId>

+          <version>3.0.1</version>

+        </plugin>

+        <plugin>

           <groupId>${expressionplugin.groupId}</groupId>

           <artifactId>${expressionplugin.artifactId}</artifactId>

           <version>${expressionplugin.version}</version>

diff --git a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-mm-ci-friendly/pom.xml b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-mm-ci-friendly/pom.xml
index e9d613b..9050799 100644
--- a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-mm-ci-friendly/pom.xml
+++ b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-mm-ci-friendly/pom.xml
@@ -79,6 +79,11 @@
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-wrapper-plugin</artifactId>
+          <version>3.0.1</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-enforcer-plugin</artifactId>
           <version>@project.version@</version>
           <executions>
diff --git a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-plugin-with-extensions/pom.xml b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-plugin-with-extensions/pom.xml
index 73faf7b..9c58484 100644
--- a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-plugin-with-extensions/pom.xml
+++ b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-plugin-with-extensions/pom.xml
@@ -42,7 +42,7 @@
                 <requirePluginVersions>

                   <banSnapshots>false</banSnapshots>

                   <unCheckedPluginList>

-                    org.apache.maven.plugins:maven-clean-plugin,org.apache.maven.plugins:maven-install-plugin,org.apache.maven.plugins:maven-deploy-plugin,org.apache.maven.plugins:maven-site-plugin

+                    org.apache.maven.plugins:maven-clean-plugin,org.apache.maven.plugins:maven-install-plugin,org.apache.maven.plugins:maven-deploy-plugin,org.apache.maven.plugins:maven-site-plugin,org.apache.maven.plugins:maven-wrapper-plugin

                   </unCheckedPluginList>

                 </requirePluginVersions>

               </rules>

diff --git a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-plugin-with-integration-test-lifecycle/pom.xml b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-plugin-with-integration-test-lifecycle/pom.xml
index efbefd7..e114db2 100644
--- a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-plugin-with-integration-test-lifecycle/pom.xml
+++ b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-plugin-with-integration-test-lifecycle/pom.xml
@@ -44,7 +44,7 @@
                 <requirePluginVersions>

                   <banSnapshots>false</banSnapshots>

                   <unCheckedPluginList>

-                    org.apache.maven.plugins:maven-clean-plugin,org.apache.maven.plugins:maven-install-plugin,org.apache.maven.plugins:maven-deploy-plugin,org.apache.maven.plugins:maven-site-plugin

+                    org.apache.maven.plugins:maven-clean-plugin,org.apache.maven.plugins:maven-install-plugin,org.apache.maven.plugins:maven-deploy-plugin,org.apache.maven.plugins:maven-site-plugin,org.apache.maven.plugins:maven-wrapper-plugin

                   </unCheckedPluginList>

                 </requirePluginVersions>

               </rules>

diff --git a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-projectGAVexpressions/pom.xml b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-projectGAVexpressions/pom.xml
index f2ed9c7..757f7f7 100644
--- a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-projectGAVexpressions/pom.xml
+++ b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-projectGAVexpressions/pom.xml
@@ -73,6 +73,11 @@
           <artifactId>maven-site-plugin</artifactId>

           <version>3.2</version>

         </plugin>

+        <plugin>

+          <groupId>org.apache.maven.plugins</groupId>

+          <artifactId>maven-wrapper-plugin</artifactId>

+          <version>3.0.1</version>

+        </plugin>

       </plugins>

     </pluginManagement>

     <plugins>

diff --git a/maven-enforcer-plugin/src/it/projects/require-plugin-versions/pom.xml b/maven-enforcer-plugin/src/it/projects/require-plugin-versions/pom.xml
index 7bd7043..beb7c2c 100644
--- a/maven-enforcer-plugin/src/it/projects/require-plugin-versions/pom.xml
+++ b/maven-enforcer-plugin/src/it/projects/require-plugin-versions/pom.xml
@@ -47,7 +47,7 @@
                 <requirePluginVersions>
                   <banSnapshots>false</banSnapshots>
                   <unCheckedPluginList>
-                    org.apache.maven.plugins:maven-clean-plugin,org.apache.maven.plugins:maven-install-plugin,org.apache.maven.plugins:maven-deploy-plugin,org.apache.maven.plugins:maven-site-plugin
+                    org.apache.maven.plugins:maven-clean-plugin,org.apache.maven.plugins:maven-install-plugin,org.apache.maven.plugins:maven-deploy-plugin,org.apache.maven.plugins:maven-site-plugin,org.apache.maven.plugins:maven-wrapper-plugin
                   </unCheckedPluginList>
                 </requirePluginVersions>
               </rules>