You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2023/01/20 08:19:32 UTC

[maven-enforcer] branch MENFORCER-450 created (now 1ccbd6d)

This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a change to branch MENFORCER-450
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git


      at 1ccbd6d  [MENFORCER-450] Code cleanup

This branch includes the following new commits:

     new 1ccbd6d  [MENFORCER-450] Code cleanup

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven-enforcer] 01/01: [MENFORCER-450] Code cleanup

Posted by sj...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch MENFORCER-450
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git

commit 1ccbd6da0f086f30e9c2424240d800dc49928ddb
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Fri Jan 20 09:12:55 2023 +0100

    [MENFORCER-450] Code cleanup
    
    - isolate abstract class in api
    - fix date format in documentation
    - drop maven-shared-utils
    - fix javadoc warnings
    - drop old classes
---
 .../java/org/example/custom/rule/MyCustomRule.java |    2 +-
 .../enforcer/rule/api/AbstractEnforcerRule.java    |    1 +
 .../rule/api/AbstractEnforcerRuleBase.java         |    5 +-
 .../maven/enforcer/rule/api/EnforcerRule2.java     |   12 +-
 .../maven/enforcer/rule/api/EnforcerRuleBase.java  |   19 +-
 .../enforcer/rule/api/EnforcerRuleHelper.java      |    2 +
 enforcer-api/src/site/apt/index.apt                |    2 +-
 .../src/site/apt/writing-a-custom-rule.apt.vm      |    2 +-
 enforcer-rules/pom.xml                             |    4 -
 .../maven/enforcer/rules/BanDynamicVersions.java   |   15 +-
 .../rules/RequireExplicitDependencyScope.java      |   21 +-
 .../enforcer/rules/RequirePluginVersions.java      |   16 +-
 .../rules/dependency/RequireUpperBoundDeps.java    |   15 +-
 .../property/AbstractPropertyEnforcerRule.java     |    3 +-
 .../enforcer/AbstractNonCacheableEnforcerRule.java |   44 -
 .../enforcer/AbstractStandardEnforcerRule.java     |  119 --
 enforcer-rules/src/site/apt/alwaysFail.apt.vm      |    4 +-
 enforcer-rules/src/site/apt/alwaysPass.apt.vm      |    2 +-
 .../site/apt/banDependencyManagementScope.apt.vm   |    2 +-
 .../src/site/apt/banDistributionManagement.apt.vm  |    2 +-
 .../apt/banDuplicatePomDependencyVersions.apt.vm   |    2 +-
 .../src/site/apt/banTransitiveDependencies.apt.vm  |    2 +-
 .../src/site/apt/bannedDependencies.apt.vm         |    2 +-
 enforcer-rules/src/site/apt/bannedPlugins.apt.vm   |    2 +-
 .../src/site/apt/bannedRepositories.apt.vm         |    2 +-
 .../src/site/apt/evaluateBeanshell.apt.vm          |    2 +-
 enforcer-rules/src/site/apt/externalRules.apt.vm   |    2 +-
 .../src/site/apt/reactorModuleConvergence.apt.vm   |    4 +-
 .../src/site/apt/requireActiveProfile.apt.vm       |    2 +-
 .../src/site/apt/requireEnvironmentVariable.apt.vm |    2 +-
 .../src/site/apt/requireFileChecksum.apt.vm        |    2 +-
 .../src/site/apt/requireFilesDontExist.apt.vm      |    2 +-
 .../src/site/apt/requireFilesExist.apt.vm          |    2 +-
 .../src/site/apt/requireFilesSize.apt.vm           |    2 +-
 .../src/site/apt/requireJavaVendor.apt.vm          |    8 +-
 .../src/site/apt/requireJavaVersion.apt.vm         |    2 +-
 .../src/site/apt/requireMavenVersion.apt.vm        |    2 +-
 .../src/site/apt/requireNoRepositories.apt.vm      |    2 +-
 enforcer-rules/src/site/apt/requireOS.apt.vm       |    2 +-
 .../src/site/apt/requirePluginVersions.apt.vm      |    2 +-
 enforcer-rules/src/site/apt/requireProperty.apt.vm |    2 +-
 .../src/site/apt/requireReleaseDeps.apt.vm         |    2 +-
 .../src/site/apt/requireReleaseVersion.apt.vm      |    6 +-
 .../src/site/apt/requireSnapshotVersion.apt.vm     |    2 +-
 .../src/site/apt/requireTextFileChecksum.apt.vm    |    2 +-
 enforcer-rules/src/site/apt/versionRanges.apt      |    2 +-
 .../rules}/EnforcerTestUtils.java                  |  117 +-
 .../enforcer/rules/TestBannedRepositories.java     |   36 +-
 .../maven/enforcer/rules/TestExternalRules.java    |    1 -
 .../enforcer/rules/TestRequirePluginVersions.java  |    1 -
 .../rules/dependency/RequireReleaseDepsTest.java   |    4 +-
 .../utils/TestMockEnforcerExpressionEvaluator.java |    2 +-
 .../apache/maven/plugins/enforcer/MockProject.java | 1538 --------------------
 maven-enforcer-extension/src/site/apt/index.apt    |    2 +-
 .../it/projects/ban-dynamic-versions/verify.groovy |    8 +-
 .../apache/maven/plugins/enforcer/EnforceMojo.java |   78 +-
 .../internal}/DefaultEnforcementRuleHelper.java    |    2 +-
 .../enforcer/internal/EnforcerRuleDesc.java        |   22 +-
 .../enforcer/internal/EnforcerRuleManager.java     |   24 +-
 maven-enforcer-plugin/src/site/apt/index.apt       |    2 +-
 maven-enforcer-plugin/src/site/apt/usage.apt.vm    |    2 +-
 .../maven/plugins/enforcer/TestEnforceMojo.java    |    3 +
 .../apache/maven/plugins/enforcer/TestRule1.java   |    7 +-
 .../apache/maven/plugins/enforcer/TestRule2.java   |    7 +-
 .../enforcer/internal/EnforcerRuleManagerTest.java |    4 +-
 pom.xml                                            |    5 -
 66 files changed, 160 insertions(+), 2061 deletions(-)

diff --git a/enforcer-api/src/custom-rule-sample/src/main/java/org/example/custom/rule/MyCustomRule.java b/enforcer-api/src/custom-rule-sample/src/main/java/org/example/custom/rule/MyCustomRule.java
index d7a36ea..16a809d 100644
--- a/enforcer-api/src/custom-rule-sample/src/main/java/org/example/custom/rule/MyCustomRule.java
+++ b/enforcer-api/src/custom-rule-sample/src/main/java/org/example/custom/rule/MyCustomRule.java
@@ -97,7 +97,7 @@ public class MyCustomRule extends AbstractEnforcerRule {
      */
     @Override
     public String toString() {
-        return String.format("MyCustomRule[level=%s, shouldIfail=%b]", getLevel(), shouldIfail);
+        return String.format("MyCustomRule[shouldIfail=%b]", shouldIfail);
     }
 }
 // END SNIPPET: rule-implementation
diff --git a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRule.java b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRule.java
index f6d6b05..d9f9ef8 100644
--- a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRule.java
+++ b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRule.java
@@ -39,6 +39,7 @@ public abstract class AbstractEnforcerRule extends AbstractEnforcerRuleBase {
      *
      * @return an Enforcer execution level
      */
+    @Override
     public EnforcerLevel getLevel() {
         return level;
     }
diff --git a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRuleBase.java b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRuleBase.java
index 57ceb74..a185672 100644
--- a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRuleBase.java
+++ b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRuleBase.java
@@ -26,7 +26,7 @@ package org.apache.maven.enforcer.rule.api;
  * @author Slawomir Jaranowski
  * @since 3.2.0
  */
-public abstract class AbstractEnforcerRuleBase implements EnforcerRuleBase {
+abstract class AbstractEnforcerRuleBase implements EnforcerRuleBase {
 
     /**
      * EnforcerLogger instance
@@ -38,12 +38,15 @@ public abstract class AbstractEnforcerRuleBase implements EnforcerRuleBase {
      *
      * @param log an {@link EnforcerLogger} instance
      */
+    @Override
     public void setLog(EnforcerLogger log) {
         this.log = log;
     }
 
     /**
      * Provide an {@link  EnforcerLogger} instance for Rule
+     * <p>
+     * <b>NOTICE</b> A logger is not available in constructors.
      *
      * @return an {@link EnforcerLogger} instance
      */
diff --git a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRule2.java b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRule2.java
index 335c420..b9e0541 100644
--- a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRule2.java
+++ b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRule2.java
@@ -18,8 +18,6 @@
  */
 package org.apache.maven.enforcer.rule.api;
 
-import javax.annotation.Nonnull;
-
 /**
  * Interface to be implemented by any rules as of version 2.0 executed by the enforcer.
  *
@@ -29,12 +27,4 @@ import javax.annotation.Nonnull;
  *         <a href="https://maven.apache.org/enforcer/enforcer-api/writing-a-custom-rule.html">Writing a custom rule</a>
  */
 @Deprecated
-public interface EnforcerRule2 extends EnforcerRule {
-    /**
-     * Returns the level of enforcement.
-     *
-     * @return level
-     */
-    @Nonnull
-    EnforcerLevel getLevel();
-}
+public interface EnforcerRule2 extends EnforcerRule {}
diff --git a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleBase.java b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleBase.java
index 328c307..0b7ef0e 100644
--- a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleBase.java
+++ b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleBase.java
@@ -26,4 +26,21 @@ package org.apache.maven.enforcer.rule.api;
  * @author Slawomir Jaranowski
  * @since 3.2.0
  */
-public interface EnforcerRuleBase {}
+public interface EnforcerRuleBase {
+
+    /**
+     * Current Enforcer execution level
+     *
+     * @return an Enforcer execution level
+     */
+    default EnforcerLevel getLevel() {
+        return EnforcerLevel.ERROR;
+    }
+
+    /**
+     * Used by {@code EnforcerMojo} to inject logger instance
+     *
+     * @param log an {@link EnforcerLogger} instance
+     */
+    default void setLog(EnforcerLogger log) {}
+}
diff --git a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
index 2c57263..eeaec78 100644
--- a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
+++ b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
@@ -53,6 +53,7 @@ public interface EnforcerRuleHelper extends ExpressionEvaluator {
      * Gets the component.
      *
      * @param clazz the clazz
+     * @param <T> a class type
      * @return the component
      * @throws ComponentLookupException the component lookup exception
      */
@@ -84,6 +85,7 @@ public interface EnforcerRuleHelper extends ExpressionEvaluator {
      *
      * @param clazz    the clazz
      * @param roleHint the role hint
+     * @param <T> a class type
      * @return the component
      * @throws ComponentLookupException the component lookup exception
      */
diff --git a/enforcer-api/src/site/apt/index.apt b/enforcer-api/src/site/apt/index.apt
index 5454a6f..d42abc0 100644
--- a/enforcer-api/src/site/apt/index.apt
+++ b/enforcer-api/src/site/apt/index.apt
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  Mar 2007
+  2007-09-01
   ------
 
 Maven Enforcer Rule API - Extending The Loving Iron Fist of Maven\x99
diff --git a/enforcer-api/src/site/apt/writing-a-custom-rule.apt.vm b/enforcer-api/src/site/apt/writing-a-custom-rule.apt.vm
index 1216f4e..416b5f4 100644
--- a/enforcer-api/src/site/apt/writing-a-custom-rule.apt.vm
+++ b/enforcer-api/src/site/apt/writing-a-custom-rule.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  Nov 2007
+  2007-09-01
   ------
 
 Writing a custom rule
diff --git a/enforcer-rules/pom.xml b/enforcer-rules/pom.xml
index 50dcac3..9623032 100644
--- a/enforcer-rules/pom.xml
+++ b/enforcer-rules/pom.xml
@@ -53,10 +53,6 @@
       <groupId>org.eclipse.aether</groupId>
       <artifactId>aether-util</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.maven.shared</groupId>
-      <artifactId>maven-shared-utils</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/BanDynamicVersions.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/BanDynamicVersions.java
index 6335f97..d82aade 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/BanDynamicVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/BanDynamicVersions.java
@@ -38,8 +38,6 @@ import org.apache.maven.enforcer.rules.utils.ArtifactMatcher;
 import org.apache.maven.enforcer.rules.utils.ArtifactUtils;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.utils.logging.MessageBuilder;
-import org.apache.maven.shared.utils.logging.MessageUtils;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
@@ -185,13 +183,12 @@ public final class BanDynamicVersions extends AbstractStandardEnforcerRule {
             } else {
                 getLog().debug("Found node " + node + " with version constraint " + node.getVersionConstraint());
                 if (predicate.test(node) && isBannedDynamicVersion(node.getVersionConstraint())) {
-                    MessageBuilder msgBuilder = MessageUtils.buffer();
-                    getLog().warn(msgBuilder
-                            .a("Dependency ")
-                            .strong(node.getDependency())
-                            .mojo(dumpIntermediatePath(nodeStack))
-                            .a(" is referenced with a banned dynamic version " + node.getVersionConstraint())
-                            .toString());
+                    getLog().warnOrError(() -> new StringBuilder()
+                            .append("Dependency ")
+                            .append(node.getDependency())
+                            .append(dumpIntermediatePath(nodeStack))
+                            .append(" is referenced with a banned dynamic version ")
+                            .append(node.getVersionConstraint()));
                     numViolations++;
                     return false;
                 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/RequireExplicitDependencyScope.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/RequireExplicitDependencyScope.java
index 11aeeb1..24c8775 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/RequireExplicitDependencyScope.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/RequireExplicitDependencyScope.java
@@ -29,8 +29,6 @@ import org.apache.maven.enforcer.rule.api.EnforcerLevel;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.utils.logging.MessageBuilder;
-import org.apache.maven.shared.utils.logging.MessageUtils;
 
 /**
  * Checks that all dependencies have an explicitly declared scope in the non-effective pom (i.e. without taking
@@ -57,19 +55,12 @@ public final class RequireExplicitDependencyScope extends AbstractStandardEnforc
         for (Dependency dependency : dependencies) {
             getLog().debug("Found dependency " + dependency);
             if (dependency.getScope() == null) {
-                MessageBuilder msgBuilder = MessageUtils.buffer();
-                msgBuilder
-                        .a("Dependency ")
-                        .strong(dependency.getManagementKey())
-                        .a(" @ ")
-                        .strong(formatLocation(project, dependency.getLocation("")))
-                        .a(" does not have an explicit scope defined!")
-                        .toString();
-                if (getLevel() == EnforcerLevel.ERROR) {
-                    getLog().error(msgBuilder.toString());
-                } else {
-                    getLog().warn(msgBuilder.toString());
-                }
+                getLog().warnOrError(() -> new StringBuilder()
+                        .append("Dependency ")
+                        .append(dependency.getManagementKey())
+                        .append(" @ ")
+                        .append(formatLocation(project, dependency.getLocation("")))
+                        .append(" does not have an explicit scope defined!"));
                 numMissingDependencyScopes++;
             }
         }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/RequirePluginVersions.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/RequirePluginVersions.java
index b7e5060..ad7baf5 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/RequirePluginVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/RequirePluginVersions.java
@@ -314,7 +314,7 @@ public final class RequirePluginVersions extends AbstractStandardEnforcerRule {
      * @return The plugins which have been removed.
      * @throws MojoExecutionException
      */
-    public Set<Plugin> removeUncheckedPlugins(Collection<String> uncheckedPlugins, Set<Plugin> plugins)
+    Set<Plugin> removeUncheckedPlugins(Collection<String> uncheckedPlugins, Set<Plugin> plugins)
             throws MojoExecutionException {
         if (uncheckedPlugins != null && !uncheckedPlugins.isEmpty()) {
             for (String pluginKey : uncheckedPlugins) {
@@ -328,8 +328,8 @@ public final class RequirePluginVersions extends AbstractStandardEnforcerRule {
     /**
      * Combines the old Collection with the new comma separated list.
      *
-     * @param uncheckedPlugins
-     * @param uncheckedPluginsList
+     * @param uncheckedPlugins a new collections
+     * @param uncheckedPluginsList a list to merge
      * @return List of unchecked plugins.
      */
     public Collection<String> combineUncheckedPlugins(
@@ -376,12 +376,12 @@ public final class RequirePluginVersions extends AbstractStandardEnforcerRule {
     /**
      * Helper method to parse and inject a Plugin.
      *
-     * @param pluginString
-     * @param field
-     * @return the plugin
-     * @throws MojoExecutionException
+     * @param pluginString a plugin description to parse
+     * @param field a source of pluginString
+     * @return the prepared plugin
+     * @throws MojoExecutionException in case of problems
      */
-    protected Plugin parsePluginString(String pluginString, String field) throws MojoExecutionException {
+    private Plugin parsePluginString(String pluginString, String field) throws MojoExecutionException {
         if (pluginString != null) {
             String[] pluginStrings = pluginString.split(":");
             if (pluginStrings.length == 2) {
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java
index c5c7a38..27f7889 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.java
@@ -37,7 +37,6 @@ import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;
 import org.apache.maven.enforcer.rules.utils.ArtifactUtils;
 import org.apache.maven.enforcer.rules.utils.ParentNodeProvider;
 import org.apache.maven.enforcer.rules.utils.ParentsVisitor;
-import org.apache.maven.shared.utils.logging.MessageUtils;
 import org.eclipse.aether.graph.DependencyNode;
 import org.eclipse.aether.graph.DependencyVisitor;
 import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
@@ -79,16 +78,6 @@ public final class RequireUpperBoundDeps extends AbstractStandardEnforcerRule {
         this.resolveUtil = Objects.requireNonNull(resolveUtil);
     }
 
-    /**
-     * Set to {@code true} if timestamped snapshots should be used.
-     *
-     * @param uniqueVersions
-     * @since 1.3
-     */
-    public void setUniqueVersions(boolean uniqueVersions) {
-        this.uniqueVersions = uniqueVersions;
-    }
-
     /**
      * Sets dependencies to exclude.
      * @param excludes a list of {@code groupId:artifactId} names
@@ -193,9 +182,7 @@ public final class RequireUpperBoundDeps extends AbstractStandardEnforcerRule {
         }
 
         String scope = artifact.getScope();
-        if ("compile".equals(scope)) {
-            result = MessageUtils.buffer().strong(result).toString();
-        } else if (scope != null) {
+        if (scope != null && !"compile".equals(scope)) {
             result += " [" + scope + ']';
         }
 
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/AbstractPropertyEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/AbstractPropertyEnforcerRule.java
index 4fd10dd..305a5e2 100755
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/AbstractPropertyEnforcerRule.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/AbstractPropertyEnforcerRule.java
@@ -119,7 +119,8 @@ abstract class AbstractPropertyEnforcerRule extends AbstractStandardEnforcerRule
     /**
      * Resolves the property value
      *
-     * @throws EnforcerRuleException
+     * @return a resolve value
+     * @throws EnforcerRuleException in case of problems
      */
     protected abstract Object resolveValue() throws EnforcerRuleException;
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractNonCacheableEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractNonCacheableEnforcerRule.java
deleted file mode 100644
index be08cd4..0000000
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractNonCacheableEnforcerRule.java
+++ /dev/null
@@ -1,44 +0,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.
- */
-package org.apache.maven.plugins.enforcer;
-
-import org.apache.maven.enforcer.rule.api.EnforcerRule;
-
-/**
- * The Class AbstractNonCacheableEnforcerRule. This is to be used by rules
- * that don't need caching... it saves implementing a bunch of methods.
- *
- * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
- */
-public abstract class AbstractNonCacheableEnforcerRule extends AbstractStandardEnforcerRule {
-    @Override
-    public String getCacheId() {
-        return "0";
-    }
-
-    @Override
-    public boolean isCacheable() {
-        return false;
-    }
-
-    @Override
-    public boolean isResultValid(EnforcerRule cachedRule) {
-        return false;
-    }
-}
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java
deleted file mode 100644
index cffc0e3..0000000
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java
+++ /dev/null
@@ -1,119 +0,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.
- */
-package org.apache.maven.plugins.enforcer;
-
-import org.apache.maven.enforcer.rule.api.EnforcerLevel;
-import org.apache.maven.enforcer.rule.api.EnforcerRule2;
-import org.apache.maven.model.InputLocation;
-import org.apache.maven.project.MavenProject;
-
-/**
- * The Class AbstractStandardEnforcerRule.
- */
-public abstract class AbstractStandardEnforcerRule implements EnforcerRule2 {
-
-    /**
-     * Specify a friendly message if the rule fails.
-     *
-     * @see {@link #setMessage(String)}
-     * @see {@link #getMessage()}
-     */
-    private String message;
-
-    private EnforcerLevel level = EnforcerLevel.ERROR;
-
-    public final void setMessage(String message) {
-        this.message = message;
-    }
-
-    public final String getMessage() {
-        return message;
-    }
-
-    @Override
-    public EnforcerLevel getLevel() {
-        return level;
-    }
-
-    public void setLevel(EnforcerLevel level) {
-        this.level = level;
-    }
-
-    /**
-     * Returns an identifier of a given project.
-     * @param project the project
-     * @return the identifier of the project in the format {@code <groupId>:<artifactId>:<version>}
-     */
-    private static String getProjectId(MavenProject project) {
-        StringBuilder buffer = new StringBuilder(128);
-
-        buffer.append(
-                (project.getGroupId() != null && project.getGroupId().length() > 0)
-                        ? project.getGroupId()
-                        : "[unknown-group-id]");
-        buffer.append(':');
-        buffer.append(
-                (project.getArtifactId() != null && project.getArtifactId().length() > 0)
-                        ? project.getArtifactId()
-                        : "[unknown-artifact-id]");
-        buffer.append(':');
-        buffer.append(
-                (project.getVersion() != null && project.getVersion().length() > 0)
-                        ? project.getVersion()
-                        : "[unknown-version]");
-
-        return buffer.toString();
-    }
-
-    /**
-     * Creates a string with line/column information for problems originating directly from this POM. Inspired by
-     * {@code o.a.m.model.building.ModelProblemUtils.formatLocation(...)}.
-     *
-     * @param project the current project.
-     * @param location The location which should be formatted, must not be {@code null}.
-     * @return The formatted problem location or an empty string if unknown, never {@code null}.
-     */
-    protected static String formatLocation(MavenProject project, InputLocation location) {
-        StringBuilder buffer = new StringBuilder();
-
-        if (!location.getSource().getModelId().equals(getProjectId(project))) {
-            buffer.append(location.getSource().getModelId());
-
-            if (location.getSource().getLocation().length() > 0) {
-                if (buffer.length() > 0) {
-                    buffer.append(", ");
-                }
-                buffer.append(location.getSource().getLocation());
-            }
-        }
-        if (location.getLineNumber() > 0) {
-            if (buffer.length() > 0) {
-                buffer.append(", ");
-            }
-            buffer.append("line ").append(location.getLineNumber());
-        }
-        if (location.getColumnNumber() > 0) {
-            if (buffer.length() > 0) {
-                buffer.append(", ");
-            }
-            buffer.append("column ").append(location.getColumnNumber());
-        }
-        return buffer.toString();
-    }
-}
diff --git a/enforcer-rules/src/site/apt/alwaysFail.apt.vm b/enforcer-rules/src/site/apt/alwaysFail.apt.vm
index d00b918..18ea993 100644
--- a/enforcer-rules/src/site/apt/alwaysFail.apt.vm
+++ b/enforcer-rules/src/site/apt/alwaysFail.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  August 2008
+  2008-08-06
   ------
 
 Always Fail
@@ -47,7 +47,7 @@ Always Fail
             </goals>
             <configuration>
               <rules>
-                <AlwaysFail/>
+                <alwaysFail/>
               </rules>
               <fail>true</fail>
             </configuration>
diff --git a/enforcer-rules/src/site/apt/alwaysPass.apt.vm b/enforcer-rules/src/site/apt/alwaysPass.apt.vm
index a422a11..e0bb396 100644
--- a/enforcer-rules/src/site/apt/alwaysPass.apt.vm
+++ b/enforcer-rules/src/site/apt/alwaysPass.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  August 2008
+  2008-08-06
   ------
 
 Always Pass
diff --git a/enforcer-rules/src/site/apt/banDependencyManagementScope.apt.vm b/enforcer-rules/src/site/apt/banDependencyManagementScope.apt.vm
index 6b00cf7..1d1a2ac 100644
--- a/enforcer-rules/src/site/apt/banDependencyManagementScope.apt.vm
+++ b/enforcer-rules/src/site/apt/banDependencyManagementScope.apt.vm
@@ -20,7 +20,7 @@
   ------
   Konrad Windszus
   ------
-  June 2022
+  2022-06-28
   ------
 
 Ban Dependency Management Scope
diff --git a/enforcer-rules/src/site/apt/banDistributionManagement.apt.vm b/enforcer-rules/src/site/apt/banDistributionManagement.apt.vm
index 4fc0a46..6dc2f7b 100644
--- a/enforcer-rules/src/site/apt/banDistributionManagement.apt.vm
+++ b/enforcer-rules/src/site/apt/banDistributionManagement.apt.vm
@@ -20,7 +20,7 @@
   ------
   Karl-Heinz Marbaise
   ------
-  June 2014
+  2014-06-28
   ------
 
 Ban Distribution Management
diff --git a/enforcer-rules/src/site/apt/banDuplicatePomDependencyVersions.apt.vm b/enforcer-rules/src/site/apt/banDuplicatePomDependencyVersions.apt.vm
index ccc9bc0..96e6782 100644
--- a/enforcer-rules/src/site/apt/banDuplicatePomDependencyVersions.apt.vm
+++ b/enforcer-rules/src/site/apt/banDuplicatePomDependencyVersions.apt.vm
@@ -20,7 +20,7 @@
   ------
   Guillaume Boue
   ------
-  November 2016
+  2016-11-30
   ------
 
 Ban Duplicate Pom Dependency Versions
diff --git a/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm b/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm
index d388183..a71bff9 100644
--- a/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm
+++ b/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm
@@ -19,7 +19,7 @@
   Ban Transitive Dependencies
   ------
   ------
-  August 2012
+  2012-10-09
   ------
 
 Ban Transitive Dependencies
diff --git a/enforcer-rules/src/site/apt/bannedDependencies.apt.vm b/enforcer-rules/src/site/apt/bannedDependencies.apt.vm
index 5018647..63ce4c4 100644
--- a/enforcer-rules/src/site/apt/bannedDependencies.apt.vm
+++ b/enforcer-rules/src/site/apt/bannedDependencies.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  November 2007
+  2007-09-01
   ------
 
 Banned Dependencies
diff --git a/enforcer-rules/src/site/apt/bannedPlugins.apt.vm b/enforcer-rules/src/site/apt/bannedPlugins.apt.vm
index 028e213..289fd75 100644
--- a/enforcer-rules/src/site/apt/bannedPlugins.apt.vm
+++ b/enforcer-rules/src/site/apt/bannedPlugins.apt.vm
@@ -20,7 +20,7 @@
   ------
   Paul Gier
   ------
-  November 2012
+  2012-11-23
   ------
 
 Banned Plugins
diff --git a/enforcer-rules/src/site/apt/bannedRepositories.apt.vm b/enforcer-rules/src/site/apt/bannedRepositories.apt.vm
index 7cd64c2..7d0734f 100644
--- a/enforcer-rules/src/site/apt/bannedRepositories.apt.vm
+++ b/enforcer-rules/src/site/apt/bannedRepositories.apt.vm
@@ -20,7 +20,7 @@
   ------
   Simon Wang
   ------
-  June 2014
+  2014-06-15
   ------
 
 Banned Specified Repositories
diff --git a/enforcer-rules/src/site/apt/evaluateBeanshell.apt.vm b/enforcer-rules/src/site/apt/evaluateBeanshell.apt.vm
index 8cf2e10..7478275 100644
--- a/enforcer-rules/src/site/apt/evaluateBeanshell.apt.vm
+++ b/enforcer-rules/src/site/apt/evaluateBeanshell.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  June 2007
+  2007-09-01
   ------
 
 Beanshell
diff --git a/enforcer-rules/src/site/apt/externalRules.apt.vm b/enforcer-rules/src/site/apt/externalRules.apt.vm
index b5a256f..fba231c 100644
--- a/enforcer-rules/src/site/apt/externalRules.apt.vm
+++ b/enforcer-rules/src/site/apt/externalRules.apt.vm
@@ -64,7 +64,7 @@ External Rules
                                 <externalRules>
                                     <!-- You can add multiple <ExternalRules> elements if you need to enforce -->
                                     <!-- rules from multiple resources. -->
-                                    <!-- src/build/rules.xml is a local file path relative to ${project.basedir} -->
+                                    <!-- src/build/rules.xml is a local file path relative to \${project.basedir} -->
                                     <location>src/build/rules.xml</location>
                                 </externalRules>
                             </rules>
diff --git a/enforcer-rules/src/site/apt/reactorModuleConvergence.apt.vm b/enforcer-rules/src/site/apt/reactorModuleConvergence.apt.vm
index 3bf2e5a..63b5cfc 100644
--- a/enforcer-rules/src/site/apt/reactorModuleConvergence.apt.vm
+++ b/enforcer-rules/src/site/apt/reactorModuleConvergence.apt.vm
@@ -20,7 +20,7 @@
   ------
   Karl-Heinz Marbaise
   ------
-  March 2014
+  2014-03-14
   ------
 
 Reactor Module Convergence
@@ -37,7 +37,7 @@ Reactor Module Convergence
   * <<ignoreModuleDependencies>> - Ignore module dependencies which references modules within the
     the reactor (default: false). 
 
-  Note: The current state does not correctly handle a situation like this {{mvn -pl subproject validate}}.
+  Note: The current state does not correctly handle a situation like this <<<mvn -pl subproject validate>>>.
         This will be handled correctly with the next major release (2.X) of enforcer.
 
    []
diff --git a/enforcer-rules/src/site/apt/requireActiveProfile.apt.vm b/enforcer-rules/src/site/apt/requireActiveProfile.apt.vm
index 307b6c9..e8007cf 100644
--- a/enforcer-rules/src/site/apt/requireActiveProfile.apt.vm
+++ b/enforcer-rules/src/site/apt/requireActiveProfile.apt.vm
@@ -20,7 +20,7 @@
   ------
   Karl-Heinz Marbaise
   ------
-  December 2013
+  2014-01-09
   ------
 
 Require Active Profile
diff --git a/enforcer-rules/src/site/apt/requireEnvironmentVariable.apt.vm b/enforcer-rules/src/site/apt/requireEnvironmentVariable.apt.vm
index 79e63b4..c05e827 100644
--- a/enforcer-rules/src/site/apt/requireEnvironmentVariable.apt.vm
+++ b/enforcer-rules/src/site/apt/requireEnvironmentVariable.apt.vm
@@ -20,7 +20,7 @@
   ------
   Karl-Heinz Marbaise
   ------
-  December 2013
+  2014-01-07
   ------
 
 Require Environment Variable
diff --git a/enforcer-rules/src/site/apt/requireFileChecksum.apt.vm b/enforcer-rules/src/site/apt/requireFileChecksum.apt.vm
index de4bd14..78b6909 100644
--- a/enforcer-rules/src/site/apt/requireFileChecksum.apt.vm
+++ b/enforcer-rules/src/site/apt/requireFileChecksum.apt.vm
@@ -20,7 +20,7 @@
   ------
   Edward Samson, Lyubomyr Shaydariv
   ------
-  February 2016
+  2016-11-26
   ------
 
 Require Files Checksum
diff --git a/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm b/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
index 6d8b21d..53b8ca6 100644
--- a/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
+++ b/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  August 2008
+  2008-08-06
   ------
 
 Require Files Don't Exist
diff --git a/enforcer-rules/src/site/apt/requireFilesExist.apt.vm b/enforcer-rules/src/site/apt/requireFilesExist.apt.vm
index e314b07..5a65f9e 100644
--- a/enforcer-rules/src/site/apt/requireFilesExist.apt.vm
+++ b/enforcer-rules/src/site/apt/requireFilesExist.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  August 2008
+  2008-08-06
   ------
 
 Require Files Exist
diff --git a/enforcer-rules/src/site/apt/requireFilesSize.apt.vm b/enforcer-rules/src/site/apt/requireFilesSize.apt.vm
index 7e7d7f0..ed4fa0d 100644
--- a/enforcer-rules/src/site/apt/requireFilesSize.apt.vm
+++ b/enforcer-rules/src/site/apt/requireFilesSize.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  August 2008
+  2008-08-06
   ------
 
 Require File Size
diff --git a/enforcer-rules/src/site/apt/requireJavaVendor.apt.vm b/enforcer-rules/src/site/apt/requireJavaVendor.apt.vm
index d7bf3bd..a9b1fb6 100644
--- a/enforcer-rules/src/site/apt/requireJavaVendor.apt.vm
+++ b/enforcer-rules/src/site/apt/requireJavaVendor.apt.vm
@@ -20,7 +20,7 @@
   ------
   Tim Sijstermans
   ------
-  July 2020
+  2020-07-31
   ------
 
 Require Java Vendor
@@ -29,11 +29,11 @@ Require Java Vendor
 
    The following parameters are supported by this rule:
    
-   * message - an optional message to the user if the rule fails.
+   * <<message>> - an optional message to the user if the rule fails.
 
-   * includes - a list of allowed JDK vendors to include, by default all is included.
+   * <<includes>> - a list of allowed JDK vendors to include, by default all is included.
 
-   * excludes - a list of banned JDK vendors. These are exceptions to the includes.
+   * <<excludes>> - a list of banned JDK vendors. These are exceptions to the includes.
 
  
    Sample Plugin Configuration:
diff --git a/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm b/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
index f4acb71..4e82bf4 100644
--- a/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
+++ b/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  June 2007
+  2007-09-01
   ------
 
 Require Java Version
diff --git a/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm b/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
index bb17a2f..e755536 100644
--- a/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
+++ b/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  June 2007
+  2007-09-01
   ------
 
 Require Maven Version
diff --git a/enforcer-rules/src/site/apt/requireNoRepositories.apt.vm b/enforcer-rules/src/site/apt/requireNoRepositories.apt.vm
index 5976dbe..60874d7 100644
--- a/enforcer-rules/src/site/apt/requireNoRepositories.apt.vm
+++ b/enforcer-rules/src/site/apt/requireNoRepositories.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  November 2007
+  2007-09-01
   ------
 
 Require No Repositories
diff --git a/enforcer-rules/src/site/apt/requireOS.apt.vm b/enforcer-rules/src/site/apt/requireOS.apt.vm
index 8c66d4c..1664f9d 100644
--- a/enforcer-rules/src/site/apt/requireOS.apt.vm
+++ b/enforcer-rules/src/site/apt/requireOS.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  June 2007
+  2007-09-01
   ------
 
 Require OS Version
diff --git a/enforcer-rules/src/site/apt/requirePluginVersions.apt.vm b/enforcer-rules/src/site/apt/requirePluginVersions.apt.vm
index bd35874..60bf472 100644
--- a/enforcer-rules/src/site/apt/requirePluginVersions.apt.vm
+++ b/enforcer-rules/src/site/apt/requirePluginVersions.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  November 2009
+  2009-09-01
   ------
 
 Require Plugin Versions
diff --git a/enforcer-rules/src/site/apt/requireProperty.apt.vm b/enforcer-rules/src/site/apt/requireProperty.apt.vm
index 9939395..374ae42 100644
--- a/enforcer-rules/src/site/apt/requireProperty.apt.vm
+++ b/enforcer-rules/src/site/apt/requireProperty.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  June 2007
+  2007-09-01
   ------
 
 Require Property
diff --git a/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm b/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm
index 9311a00..dc57703 100644
--- a/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm
+++ b/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  Auguest 2008
+  2008-09-01
   ------
 
 Require Release Dependencies
diff --git a/enforcer-rules/src/site/apt/requireReleaseVersion.apt.vm b/enforcer-rules/src/site/apt/requireReleaseVersion.apt.vm
index 738e4b0..7a82101 100644
--- a/enforcer-rules/src/site/apt/requireReleaseVersion.apt.vm
+++ b/enforcer-rules/src/site/apt/requireReleaseVersion.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  August 2008
+  2008-08-06
   ------
 
 Require Release Version
@@ -30,9 +30,9 @@ Require Release Version
 
    The following parameters are supported by this rule:
    
-   * message - an optional message to the user if the rule fails.
+   * <<message>> - an optional message to the user if the rule fails.
     
-   * failWhenParentIsSnapshot - if the parent should be checked. Default: true 
+   * <<failWhenParentIsSnapshot>> - if the parent should be checked. Default: true
 
    []
 
diff --git a/enforcer-rules/src/site/apt/requireSnapshotVersion.apt.vm b/enforcer-rules/src/site/apt/requireSnapshotVersion.apt.vm
index 03820f9..9f6d505 100644
--- a/enforcer-rules/src/site/apt/requireSnapshotVersion.apt.vm
+++ b/enforcer-rules/src/site/apt/requireSnapshotVersion.apt.vm
@@ -20,7 +20,7 @@
   ------
   Guillaume Boue
   ------
-  September 2016
+  2016-09-20
   ------
 
 Require Snapshot Version
diff --git a/enforcer-rules/src/site/apt/requireTextFileChecksum.apt.vm b/enforcer-rules/src/site/apt/requireTextFileChecksum.apt.vm
index f210146..9f001bd 100644
--- a/enforcer-rules/src/site/apt/requireTextFileChecksum.apt.vm
+++ b/enforcer-rules/src/site/apt/requireTextFileChecksum.apt.vm
@@ -20,7 +20,7 @@
   ------
   Konrad Windszus
   ------
-  October 2020
+  2020-09-13
   ------
 
 Require Text Files Checksum
diff --git a/enforcer-rules/src/site/apt/versionRanges.apt b/enforcer-rules/src/site/apt/versionRanges.apt
index a27213b..61159df 100644
--- a/enforcer-rules/src/site/apt/versionRanges.apt
+++ b/enforcer-rules/src/site/apt/versionRanges.apt
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  May 2007
+  2007-09-01
   ------
 
 Version Range Specification   
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/EnforcerTestUtils.java
similarity index 55%
rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/EnforcerTestUtils.java
index cd4d953..a4d4fa8 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/EnforcerTestUtils.java
@@ -16,34 +16,22 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules;
 
 import java.util.Properties;
 
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.enforcer.rules.utils.DependencyNodeBuilder;
-import org.apache.maven.enforcer.rules.utils.MockEnforcerExpressionEvaluator;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.InputSource;
 import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
-import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugin.logging.SystemStreamLog;
-import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingRequest;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.classworlds.ClassWorld;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionException;
 import org.eclipse.aether.graph.DependencyNode;
 
 import static org.apache.maven.artifact.Artifact.SCOPE_TEST;
@@ -58,8 +46,6 @@ import static org.mockito.Mockito.when;
  */
 public final class EnforcerTestUtils {
 
-    private static RepositorySystem REPOSITORY_SYSTEM = mock(RepositorySystem.class);
-
     /**
      * Gets the maven session.
      *
@@ -83,93 +69,6 @@ public final class EnforcerTestUtils {
         return new MavenSession(mock, new DefaultRepositorySystemSession(), mer, meResult);
     }
 
-    /**
-     * Gets the helper.
-     *
-     * @return the helper
-     */
-    public static EnforcerRuleHelper getHelper() {
-        return getHelper(new MockProject(), false);
-    }
-
-    /**
-     * Gets the helper.
-     *
-     * @param mockExpression the mock expression
-     * @return the helper
-     */
-    public static EnforcerRuleHelper getHelper(boolean mockExpression) {
-        return getHelper(new MockProject(), mockExpression);
-    }
-
-    /**
-     * Gets the helper.
-     *
-     * @param project the project
-     * @return the helper
-     */
-    public static EnforcerRuleHelper getHelper(MavenProject project) {
-        return getHelper(project, false);
-    }
-
-    public static void provideCollectDependencies(DependencyNode node) {
-        try {
-            when(REPOSITORY_SYSTEM.collectDependencies(any(), any(CollectRequest.class)))
-                    .then(i -> new CollectResult(i.getArgument(1)).setRoot(node));
-        } catch (DependencyCollectionException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public static void provideCollectDependencies() {
-        provideCollectDependencies(getUniformDependencyNodeTree());
-    }
-
-    /**
-     * Gets the helper.
-     *
-     * @param project the project
-     * @param mockExpression the mock expression
-     * @return the helper
-     */
-    public static EnforcerRuleHelper getHelper(MavenProject project, boolean mockExpression) {
-        try {
-            MavenSession session = getMavenSession();
-            MojoExecution mockExecution = mock(MojoExecution.class);
-            ExpressionEvaluator eval;
-            if (mockExpression) {
-                eval = new MockEnforcerExpressionEvaluator(session);
-            } else {
-                session.setCurrentProject(project);
-                eval = new PluginParameterExpressionEvaluator(session, mockExecution);
-            }
-
-            PlexusContainer container = mock(PlexusContainer.class);
-            when(container.lookup(RepositorySystem.class)).thenReturn(REPOSITORY_SYSTEM);
-            provideCollectDependencies();
-
-            MojoDescriptor mojoDescriptor = new MojoDescriptor();
-            mojoDescriptor.setRealm(getTestClassRealm());
-            when(mockExecution.getMojoDescriptor()).thenReturn(mojoDescriptor);
-            when(container.lookup(MojoExecution.class)).thenReturn(mockExecution);
-            return new DefaultEnforcementRuleHelper(session, eval, new SystemStreamLog(), container);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Gets the helper.
-     *
-     * @param project the project
-     * @param eval the expression evaluator to use
-     * @return the helper
-     */
-    public static EnforcerRuleHelper getHelper(MavenProject project, ExpressionEvaluator eval) {
-        MavenSession session = getMavenSession();
-        return new DefaultEnforcementRuleHelper(session, eval, new SystemStreamLog(), null);
-    }
-
     /**
      * New plugin.
      *
@@ -190,20 +89,6 @@ public final class EnforcerTestUtils {
         return plugin;
     }
 
-    public static DependencyNode getUniformDependencyNodeTree() {
-        return new DependencyNodeBuilder()
-                .withType(DependencyNodeBuilder.Type.POM)
-                .withChildNode(new DependencyNodeBuilder()
-                        .withArtifactId("childA")
-                        .withVersion("1.0.0")
-                        .build())
-                .withChildNode(new DependencyNodeBuilder()
-                        .withArtifactId("childB")
-                        .withVersion("2.0.0")
-                        .build())
-                .build();
-    }
-
     public static DependencyNode getDependencyNodeWithMultipleSnapshots() {
         return new DependencyNodeBuilder()
                 .withType(DependencyNodeBuilder.Type.POM)
diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestBannedRepositories.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestBannedRepositories.java
index 094a614..bccddaf 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestBannedRepositories.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestBannedRepositories.java
@@ -25,32 +25,34 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.MavenArtifactRepository;
 import org.apache.maven.enforcer.rule.api.EnforcerLogger;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.plugins.enforcer.MockProject;
+import org.apache.maven.project.MavenProject;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
 
 import static org.junit.jupiter.api.Assertions.fail;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 /**
  * Test the "banned repositories" rule.
  *
  * @author <a href="mailto:wangyf2010@gmail.com">Simon Wang</a>
  */
+@ExtendWith(MockitoExtension.class)
 class TestBannedRepositories {
 
-    private BannedRepositories rule;
+    @Mock
+    private MavenProject project;
 
-    private MockProject project;
+    @InjectMocks
+    private BannedRepositories rule;
 
     @BeforeEach
     public void setUp() {
-        project = new MockProject();
-        project.setGroupId("org.apache.maven.plugins.enforcer.test");
-        project.setVersion("1.0-SNAPSHOT");
-
-        rule = new BannedRepositories(project);
-        rule.setMessage("my message");
         rule.setLog(mock(EnforcerLogger.class));
     }
 
@@ -60,8 +62,8 @@ class TestBannedRepositories {
         List<ArtifactRepository> repos = new ArrayList<>();
         repos.add(repo1);
 
-        project.setRemoteArtifactRepositories(repos);
-        project.setPluginArtifactRepositories(repos);
+        when(project.getRemoteArtifactRepositories()).thenReturn(repos);
+        when(project.getPluginArtifactRepositories()).thenReturn(repos);
 
         rule.execute();
     }
@@ -76,8 +78,8 @@ class TestBannedRepositories {
         repos.add(repo2);
         repos.add(repo3);
 
-        project.setRemoteArtifactRepositories(repos);
-        project.setPluginArtifactRepositories(repos);
+        when(project.getRemoteArtifactRepositories()).thenReturn(repos);
+        when(project.getPluginArtifactRepositories()).thenReturn(repos);
 
         List<String> bannedRepositories = new ArrayList<>();
         String pattern1 = "http://repo1/*";
@@ -102,8 +104,8 @@ class TestBannedRepositories {
         repos.add(repo1);
         repos.add(repo2);
 
-        project.setRemoteArtifactRepositories(repos);
-        project.setPluginArtifactRepositories(repos);
+        when(project.getRemoteArtifactRepositories()).thenReturn(repos);
+        when(project.getPluginArtifactRepositories()).thenReturn(repos);
 
         List<String> bannedRepositories = new ArrayList<>();
         String pattern1 = "http://repo1/*";
@@ -126,8 +128,8 @@ class TestBannedRepositories {
         repos.add(repo2);
         repos.add(repo3);
 
-        project.setRemoteArtifactRepositories(repos);
-        project.setPluginArtifactRepositories(repos);
+        when(project.getRemoteArtifactRepositories()).thenReturn(repos);
+        when(project.getPluginArtifactRepositories()).thenReturn(repos);
 
         List<String> patterns = new ArrayList<>();
         String pattern1 = "http://repo1/*";
diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestExternalRules.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestExternalRules.java
index ea6cf7b..78af21b 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestExternalRules.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestExternalRules.java
@@ -23,7 +23,6 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rules.utils.ExpressionEvaluator;
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugins.enforcer.EnforcerTestUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestRequirePluginVersions.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestRequirePluginVersions.java
index a410e26..49f6320 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestRequirePluginVersions.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/TestRequirePluginVersions.java
@@ -34,7 +34,6 @@ import org.apache.maven.lifecycle.DefaultLifecycles;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.PluginManager;
-import org.apache.maven.plugins.enforcer.EnforcerTestUtils;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.rtinfo.RuntimeInformation;
 import org.codehaus.plexus.PlexusContainer;
diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java
index 0f5f1df..b1409a6 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/RequireReleaseDepsTest.java
@@ -33,8 +33,8 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import static org.apache.maven.plugins.enforcer.EnforcerTestUtils.getDependencyNodeWithMultipleSnapshots;
-import static org.apache.maven.plugins.enforcer.EnforcerTestUtils.getDependencyNodeWithMultipleTestSnapshots;
+import static org.apache.maven.enforcer.rules.EnforcerTestUtils.getDependencyNodeWithMultipleSnapshots;
+import static org.apache.maven.enforcer.rules.EnforcerTestUtils.getDependencyNodeWithMultipleTestSnapshots;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.mockito.Mockito.verifyNoInteractions;
diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestMockEnforcerExpressionEvaluator.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestMockEnforcerExpressionEvaluator.java
index 7894b25..2130818 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestMockEnforcerExpressionEvaluator.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestMockEnforcerExpressionEvaluator.java
@@ -18,9 +18,9 @@
  */
 package org.apache.maven.enforcer.rules.utils;
 
+import org.apache.maven.enforcer.rules.EnforcerTestUtils;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
-import org.apache.maven.plugins.enforcer.EnforcerTestUtils;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.junit.jupiter.api.Test;
 
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockProject.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockProject.java
deleted file mode 100644
index 475ffa7..0000000
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockProject.java
+++ /dev/null
@@ -1,1538 +0,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.
- */
-package org.apache.maven.plugins.enforcer;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.model.Build;
-import org.apache.maven.model.CiManagement;
-import org.apache.maven.model.Contributor;
-import org.apache.maven.model.DependencyManagement;
-import org.apache.maven.model.Developer;
-import org.apache.maven.model.DistributionManagement;
-import org.apache.maven.model.IssueManagement;
-import org.apache.maven.model.License;
-import org.apache.maven.model.MailingList;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Organization;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.PluginManagement;
-import org.apache.maven.model.Prerequisites;
-import org.apache.maven.model.Reporting;
-import org.apache.maven.model.Resource;
-import org.apache.maven.model.Scm;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-
-/**
- * very simple stub of maven project, going to take a lot of work to make it useful as a stub though.
- */
-public class MockProject extends MavenProject {
-
-    /** The group id. */
-    private String groupId;
-
-    /** The artifact id. */
-    private String artifactId;
-
-    /** The name. */
-    private String name;
-
-    /** The model. */
-    private Model model;
-
-    /** The parent. */
-    private MavenProject parent;
-
-    /** The dependencies. */
-    private List dependencies;
-
-    /** The file. */
-    private File file;
-
-    /** The collected projects. */
-    private List collectedProjects;
-
-    /** The attached artifacts. */
-    private List attachedArtifacts;
-
-    /** The compile source roots. */
-    private List compileSourceRoots;
-
-    /** The test compile source roots. */
-    private List testCompileSourceRoots;
-
-    /** The script source roots. */
-    private List scriptSourceRoots;
-
-    /** The plugin artifact repositories. */
-    private List pluginArtifactRepositories;
-
-    /** The artifact repositories. */
-    private List artifactRepositories;
-
-    // private ArtifactRepository releaseArtifactRepository;
-
-    // private ArtifactRepository snapshotArtifactRepository;
-
-    /** The active profiles. */
-    private List activeProfiles;
-
-    /** The dependency artifacts. */
-    private Set dependencyArtifacts;
-
-    /** The dependency management. */
-    private DependencyManagement dependencyManagement;
-
-    /** The artifact. */
-    private Artifact artifact;
-
-    // private Map artifactMap;
-
-    /** The original model. */
-    private Model originalModel;
-
-    // private Map pluginArtifactMap;
-
-    // private Map reportArtifactMap;
-
-    // private Map extensionArtifactMap;
-
-    // private Map projectReferences;
-
-    // private Build buildOverlay;
-
-    /** The execution root. */
-    private boolean executionRoot;
-
-    /** The compile artifacts. */
-    private List compileArtifacts;
-
-    /** The compile dependencies. */
-    private List compileDependencies;
-
-    /** The system dependencies. */
-    private List systemDependencies;
-
-    /** The test classpath elements. */
-    private List testClasspathElements;
-
-    /** The test dependencies. */
-    private List testDependencies;
-
-    /** The system classpath elements. */
-    private List systemClasspathElements;
-
-    /** The system artifacts. */
-    private List systemArtifacts;
-
-    /** The test artifacts. */
-    private List testArtifacts;
-
-    /** The runtime artifacts. */
-    private List runtimeArtifacts;
-
-    /** The runtime dependencies. */
-    private List runtimeDependencies;
-
-    /** The runtime classpath elements. */
-    private List runtimeClasspathElements;
-
-    /** The model version. */
-    private String modelVersion;
-
-    /** The packaging. */
-    private String packaging;
-
-    /** The inception year. */
-    private String inceptionYear;
-
-    /** The url. */
-    private String url;
-
-    /** The description. */
-    private String description;
-
-    /** The version. */
-    private String version;
-
-    /** The default goal. */
-    private String defaultGoal;
-
-    /** The artifacts. */
-    private Set artifacts;
-
-    /** The properties. */
-    private Properties properties = new Properties();
-
-    /** The base dir. */
-    private File baseDir = null;
-
-    /**
-     * Instantiates a new mock project.
-     */
-    public MockProject() {
-        super((Model) null);
-    }
-
-    // kinda dangerous...
-    /**
-     * Instantiates a new mock project.
-     *
-     * @param model the model
-     */
-    public MockProject(Model model) {
-        // super(model);
-        super((Model) null);
-    }
-
-    // kinda dangerous...
-    /**
-     * Instantiates a new mock project.
-     *
-     * @param project the project
-     */
-    public MockProject(MavenProject project) {
-        // super(project);
-        super((Model) null);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getModulePathAdjustment(org.apache.maven.project.MavenProject)
-     */
-    public String getModulePathAdjustment(MavenProject mavenProject) throws IOException {
-        return "";
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getArtifact()
-     */
-    public Artifact getArtifact() {
-        return artifact;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setArtifact(org.apache.maven.artifact.Artifact)
-     */
-    public void setArtifact(Artifact artifact) {
-        this.artifact = artifact;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getModel()
-     */
-    public Model getModel() {
-        return model;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getParent()
-     */
-    public MavenProject getParent() {
-        return parent;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setParent(org.apache.maven.project.MavenProject)
-     */
-    public void setParent(MavenProject mavenProject) {
-        this.parent = mavenProject;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setRemoteArtifactRepositories(java.util.List)
-     */
-    public void setRemoteArtifactRepositories(List list) {
-        this.artifactRepositories = list;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getRemoteArtifactRepositories()
-     */
-    public List getRemoteArtifactRepositories() {
-        return artifactRepositories;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#hasParent()
-     */
-    public boolean hasParent() {
-        if (parent != null) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getFile()
-     */
-    public File getFile() {
-        return file;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setFile(java.io.File)
-     */
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getBasedir()
-     */
-    public File getBasedir() {
-        if (baseDir == null) {
-            final String path = System.getProperty("basedir");
-            baseDir = null != path ? new File(path) : new File("");
-        }
-        return baseDir;
-    }
-
-    /**
-     * Sets the base dir.
-     *
-     * @param base the new base dir
-     */
-    public void setBaseDir(File base) {
-        baseDir = base;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setDependencies(java.util.List)
-     */
-    public void setDependencies(List list) {
-        dependencies = list;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getDependencies()
-     */
-    public List getDependencies() {
-        if (dependencies == null) {
-            dependencies = Collections.EMPTY_LIST;
-        }
-        return dependencies;
-    }
-
-    /**
-     * Sets the dependency management.
-     *
-     * @param depMgt the new dependency management
-     */
-    public void setDependencyManagement(DependencyManagement depMgt) {
-        this.dependencyManagement = depMgt;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getDependencyManagement()
-     */
-    public DependencyManagement getDependencyManagement() {
-        if (dependencyManagement == null) {
-            dependencyManagement = new DependencyManagement();
-        }
-
-        return dependencyManagement;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addCompileSourceRoot(java.lang.String)
-     */
-    public void addCompileSourceRoot(String string) {
-        if (compileSourceRoots == null) {
-            compileSourceRoots = Collections.singletonList(string);
-        } else {
-            compileSourceRoots.add(string);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addScriptSourceRoot(java.lang.String)
-     */
-    public void addScriptSourceRoot(String string) {
-        if (scriptSourceRoots == null) {
-            scriptSourceRoots = Collections.singletonList(string);
-        } else {
-            scriptSourceRoots.add(string);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addTestCompileSourceRoot(java.lang.String)
-     */
-    public void addTestCompileSourceRoot(String string) {
-        if (testCompileSourceRoots == null) {
-            testCompileSourceRoots = Collections.singletonList(string);
-        } else {
-            testCompileSourceRoots.add(string);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getCompileSourceRoots()
-     */
-    public List getCompileSourceRoots() {
-        return compileSourceRoots;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getScriptSourceRoots()
-     */
-    public List getScriptSourceRoots() {
-        return scriptSourceRoots;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getTestCompileSourceRoots()
-     */
-    public List getTestCompileSourceRoots() {
-        return testCompileSourceRoots;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getCompileClasspathElements()
-     */
-    public List getCompileClasspathElements() throws DependencyResolutionRequiredException {
-        return compileSourceRoots;
-    }
-
-    /**
-     * Sets the compile artifacts.
-     *
-     * @param compileArtifacts the new compile artifacts
-     */
-    public void setCompileArtifacts(List compileArtifacts) {
-        this.compileArtifacts = compileArtifacts;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getCompileArtifacts()
-     */
-    public List getCompileArtifacts() {
-        return compileArtifacts;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getCompileDependencies()
-     */
-    public List getCompileDependencies() {
-        return compileDependencies;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getTestClasspathElements()
-     */
-    public List getTestClasspathElements() throws DependencyResolutionRequiredException {
-        return testClasspathElements;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getTestArtifacts()
-     */
-    public List getTestArtifacts() {
-        return testArtifacts;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getTestDependencies()
-     */
-    public List getTestDependencies() {
-        return testDependencies;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getRuntimeClasspathElements()
-     */
-    public List getRuntimeClasspathElements() throws DependencyResolutionRequiredException {
-        return runtimeClasspathElements;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getRuntimeArtifacts()
-     */
-    public List getRuntimeArtifacts() {
-        return runtimeArtifacts;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getRuntimeDependencies()
-     */
-    public List getRuntimeDependencies() {
-        return runtimeDependencies;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getSystemClasspathElements()
-     */
-    public List getSystemClasspathElements() throws DependencyResolutionRequiredException {
-        return systemClasspathElements;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getSystemArtifacts()
-     */
-    public List getSystemArtifacts() {
-        return systemArtifacts;
-    }
-
-    /**
-     * Sets the runtime classpath elements.
-     *
-     * @param runtimeClasspathElements the new runtime classpath elements
-     */
-    public void setRuntimeClasspathElements(List runtimeClasspathElements) {
-        this.runtimeClasspathElements = runtimeClasspathElements;
-    }
-
-    /**
-     * Sets the attached artifacts.
-     *
-     * @param attachedArtifacts the new attached artifacts
-     */
-    public void setAttachedArtifacts(List attachedArtifacts) {
-        this.attachedArtifacts = attachedArtifacts;
-    }
-
-    /**
-     * Sets the compile source roots.
-     *
-     * @param compileSourceRoots the new compile source roots
-     */
-    public void setCompileSourceRoots(List compileSourceRoots) {
-        this.compileSourceRoots = compileSourceRoots;
-    }
-
-    /**
-     * Sets the test compile source roots.
-     *
-     * @param testCompileSourceRoots the new test compile source roots
-     */
-    public void setTestCompileSourceRoots(List testCompileSourceRoots) {
-        this.testCompileSourceRoots = testCompileSourceRoots;
-    }
-
-    /**
-     * Sets the script source roots.
-     *
-     * @param scriptSourceRoots the new script source roots
-     */
-    public void setScriptSourceRoots(List scriptSourceRoots) {
-        this.scriptSourceRoots = scriptSourceRoots;
-    }
-
-    /**
-     * Sets the artifact map.
-     *
-     * @param artifactMap the new artifact map
-     */
-    public void setArtifactMap(Map artifactMap) {
-        // this.artifactMap = artifactMap;
-    }
-
-    /**
-     * Sets the plugin artifact map.
-     *
-     * @param pluginArtifactMap the new plugin artifact map
-     */
-    public void setPluginArtifactMap(Map pluginArtifactMap) {
-        // this.pluginArtifactMap = pluginArtifactMap;
-    }
-
-    /**
-     * Sets the report artifact map.
-     *
-     * @param reportArtifactMap the new report artifact map
-     */
-    public void setReportArtifactMap(Map reportArtifactMap) {
-        // this.reportArtifactMap = reportArtifactMap;
-    }
-
-    /**
-     * Sets the extension artifact map.
-     *
-     * @param extensionArtifactMap the new extension artifact map
-     */
-    public void setExtensionArtifactMap(Map extensionArtifactMap) {
-        // this.extensionArtifactMap = extensionArtifactMap;
-    }
-
-    /**
-     * Sets the project references.
-     *
-     * @param projectReferences the new project references
-     */
-    public void setProjectReferences(Map projectReferences) {
-        // this.projectReferences = projectReferences;
-    }
-
-    /**
-     * Sets the builds the overlay.
-     *
-     * @param buildOverlay the new builds the overlay
-     */
-    public void setBuildOverlay(Build buildOverlay) {
-        // this.buildOverlay = buildOverlay;
-    }
-
-    /**
-     * Sets the compile dependencies.
-     *
-     * @param compileDependencies the new compile dependencies
-     */
-    public void setCompileDependencies(List compileDependencies) {
-        this.compileDependencies = compileDependencies;
-    }
-
-    /**
-     * Sets the system dependencies.
-     *
-     * @param systemDependencies the new system dependencies
-     */
-    public void setSystemDependencies(List systemDependencies) {
-        this.systemDependencies = systemDependencies;
-    }
-
-    /**
-     * Sets the test classpath elements.
-     *
-     * @param testClasspathElements the new test classpath elements
-     */
-    public void setTestClasspathElements(List testClasspathElements) {
-        this.testClasspathElements = testClasspathElements;
-    }
-
-    /**
-     * Sets the test dependencies.
-     *
-     * @param testDependencies the new test dependencies
-     */
-    public void setTestDependencies(List testDependencies) {
-        this.testDependencies = testDependencies;
-    }
-
-    /**
-     * Sets the system classpath elements.
-     *
-     * @param systemClasspathElements the new system classpath elements
-     */
-    public void setSystemClasspathElements(List systemClasspathElements) {
-        this.systemClasspathElements = systemClasspathElements;
-    }
-
-    /**
-     * Sets the system artifacts.
-     *
-     * @param systemArtifacts the new system artifacts
-     */
-    public void setSystemArtifacts(List systemArtifacts) {
-        this.systemArtifacts = systemArtifacts;
-    }
-
-    /**
-     * Sets the test artifacts.
-     *
-     * @param testArtifacts the new test artifacts
-     */
-    public void setTestArtifacts(List testArtifacts) {
-        this.testArtifacts = testArtifacts;
-    }
-
-    /**
-     * Sets the runtime artifacts.
-     *
-     * @param runtimeArtifacts the new runtime artifacts
-     */
-    public void setRuntimeArtifacts(List runtimeArtifacts) {
-        this.runtimeArtifacts = runtimeArtifacts;
-    }
-
-    /**
-     * Sets the runtime dependencies.
-     *
-     * @param runtimeDependencies the new runtime dependencies
-     */
-    public void setRuntimeDependencies(List runtimeDependencies) {
-        this.runtimeDependencies = runtimeDependencies;
-    }
-
-    /**
-     * Sets the model.
-     *
-     * @param model the new model
-     */
-    public void setModel(Model model) {
-        this.model = model;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getSystemDependencies()
-     */
-    public List getSystemDependencies() {
-        return systemDependencies;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setModelVersion(java.lang.String)
-     */
-    public void setModelVersion(String string) {
-        this.modelVersion = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getModelVersion()
-     */
-    public String getModelVersion() {
-        return modelVersion;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getId()
-     */
-    public String getId() {
-        return "";
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setGroupId(java.lang.String)
-     */
-    public void setGroupId(String string) {
-        this.groupId = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getGroupId()
-     */
-    public String getGroupId() {
-        return groupId;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setArtifactId(java.lang.String)
-     */
-    public void setArtifactId(String string) {
-        this.artifactId = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getArtifactId()
-     */
-    public String getArtifactId() {
-        return artifactId;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setName(java.lang.String)
-     */
-    public void setName(String string) {
-        this.name = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getName()
-     */
-    public String getName() {
-        return name;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setVersion(java.lang.String)
-     */
-    public void setVersion(String string) {
-        this.version = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getVersion()
-     */
-    public String getVersion() {
-        return version;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getPackaging()
-     */
-    public String getPackaging() {
-        return packaging;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setPackaging(java.lang.String)
-     */
-    public void setPackaging(String string) {
-        this.packaging = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setInceptionYear(java.lang.String)
-     */
-    public void setInceptionYear(String string) {
-        this.inceptionYear = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getInceptionYear()
-     */
-    public String getInceptionYear() {
-        return inceptionYear;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setUrl(java.lang.String)
-     */
-    public void setUrl(String string) {
-        this.url = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getUrl()
-     */
-    public String getUrl() {
-        return url;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getPrerequisites()
-     */
-    public Prerequisites getPrerequisites() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setIssueManagement(org.apache.maven.model.IssueManagement)
-     */
-    public void setIssueManagement(IssueManagement issueManagement) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getCiManagement()
-     */
-    public CiManagement getCiManagement() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setCiManagement(org.apache.maven.model.CiManagement)
-     */
-    public void setCiManagement(CiManagement ciManagement) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getIssueManagement()
-     */
-    public IssueManagement getIssueManagement() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see
-     * org.apache.maven.project.MavenProject#setDistributionManagement(org.apache.maven.model.DistributionManagement)
-     */
-    public void setDistributionManagement(DistributionManagement distributionManagement) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getDistributionManagement()
-     */
-    public DistributionManagement getDistributionManagement() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setDescription(java.lang.String)
-     */
-    public void setDescription(String string) {
-        this.description = string;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getDescription()
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setOrganization(org.apache.maven.model.Organization)
-     */
-    public void setOrganization(Organization organization) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getOrganization()
-     */
-    public Organization getOrganization() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setScm(org.apache.maven.model.Scm)
-     */
-    public void setScm(Scm scm) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getScm()
-     */
-    public Scm getScm() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setMailingLists(java.util.List)
-     */
-    public void setMailingLists(List list) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getMailingLists()
-     */
-    public List getMailingLists() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addMailingList(org.apache.maven.model.MailingList)
-     */
-    public void addMailingList(MailingList mailingList) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setDevelopers(java.util.List)
-     */
-    public void setDevelopers(List list) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getDevelopers()
-     */
-    public List getDevelopers() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addDeveloper(org.apache.maven.model.Developer)
-     */
-    public void addDeveloper(Developer developer) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setContributors(java.util.List)
-     */
-    public void setContributors(List list) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getContributors()
-     */
-    public List getContributors() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addContributor(org.apache.maven.model.Contributor)
-     */
-    public void addContributor(Contributor contributor) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setBuild(org.apache.maven.model.Build)
-     */
-    public void setBuild(Build build) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getBuild()
-     */
-    public Build getBuild() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getResources()
-     */
-    public List getResources() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getTestResources()
-     */
-    public List getTestResources() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addResource(org.apache.maven.model.Resource)
-     */
-    public void addResource(Resource resource) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addTestResource(org.apache.maven.model.Resource)
-     */
-    public void addTestResource(Resource resource) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setReporting(org.apache.maven.model.Reporting)
-     */
-    public void setReporting(Reporting reporting) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getReporting()
-     */
-    public Reporting getReporting() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setLicenses(java.util.List)
-     */
-    public void setLicenses(List list) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getLicenses()
-     */
-    public List getLicenses() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addLicense(org.apache.maven.model.License)
-     */
-    public void addLicense(License license) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setArtifacts(java.util.Set)
-     */
-    public void setArtifacts(Set set) {
-        this.artifacts = set;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getArtifacts()
-     */
-    public Set getArtifacts() {
-        if (artifacts == null) {
-            return Collections.EMPTY_SET;
-        } else {
-            return artifacts;
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getArtifactMap()
-     */
-    public Map getArtifactMap() {
-        return Collections.singletonMap("", "");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setPluginArtifacts(java.util.Set)
-     */
-    public void setPluginArtifacts(Set set) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getPluginArtifacts()
-     */
-    public Set getPluginArtifacts() {
-        return Collections.singleton("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getPluginArtifactMap()
-     */
-    public Map getPluginArtifactMap() {
-        return Collections.singletonMap("", "");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setReportArtifacts(java.util.Set)
-     */
-    public void setReportArtifacts(Set set) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getReportArtifacts()
-     */
-    public Set getReportArtifacts() {
-        return Collections.singleton("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getReportArtifactMap()
-     */
-    public Map getReportArtifactMap() {
-        return Collections.singletonMap("", "");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setExtensionArtifacts(java.util.Set)
-     */
-    public void setExtensionArtifacts(Set set) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getExtensionArtifacts()
-     */
-    public Set getExtensionArtifacts() {
-        return Collections.singleton("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getExtensionArtifactMap()
-     */
-    public Map getExtensionArtifactMap() {
-        return Collections.singletonMap("", "");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setParentArtifact(org.apache.maven.artifact.Artifact)
-     */
-    public void setParentArtifact(Artifact artifact) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getParentArtifact()
-     */
-    public Artifact getParentArtifact() {
-        if (parent != null) {
-            return parent.getArtifact();
-        } else return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getRepositories()
-     */
-    public List getRepositories() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getReportPlugins()
-     */
-    public List getReportPlugins() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getBuildPlugins()
-     */
-    public List getBuildPlugins() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getModules()
-     */
-    public List getModules() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getPluginManagement()
-     */
-    public PluginManagement getPluginManagement() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addPlugin(org.apache.maven.model.Plugin)
-     */
-    public void addPlugin(Plugin plugin) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#injectPluginManagementInfo(org.apache.maven.model.Plugin)
-     */
-    public void injectPluginManagementInfo(Plugin plugin) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getCollectedProjects()
-     */
-    public List getCollectedProjects() {
-        return collectedProjects;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setCollectedProjects(java.util.List)
-     */
-    public void setCollectedProjects(List list) {
-        this.collectedProjects = list;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setPluginArtifactRepositories(java.util.List)
-     */
-    public void setPluginArtifactRepositories(List list) {
-        this.pluginArtifactRepositories = list;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getPluginArtifactRepositories()
-     */
-    public List getPluginArtifactRepositories() {
-        return pluginArtifactRepositories;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getDistributionManagementArtifactRepository()
-     */
-    public ArtifactRepository getDistributionManagementArtifactRepository() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getPluginRepositories()
-     */
-    public List getPluginRepositories() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setActiveProfiles(java.util.List)
-     */
-    public void setActiveProfiles(List list) {
-        activeProfiles = list;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getActiveProfiles()
-     */
-    public List getActiveProfiles() {
-        return activeProfiles;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addAttachedArtifact(org.apache.maven.artifact.Artifact)
-     */
-    public void addAttachedArtifact(Artifact theArtifact) {
-        if (attachedArtifacts == null) {
-            this.attachedArtifacts = Collections.singletonList(theArtifact);
-        } else {
-            attachedArtifacts.add(theArtifact);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getAttachedArtifacts()
-     */
-    public List getAttachedArtifacts() {
-        return attachedArtifacts;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getGoalConfiguration(java.lang.String, java.lang.String,
-     * java.lang.String, java.lang.String)
-     */
-    public Xpp3Dom getGoalConfiguration(String string, String string1, String string2, String string3) {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getReportConfiguration(java.lang.String, java.lang.String,
-     * java.lang.String)
-     */
-    public Xpp3Dom getReportConfiguration(String string, String string1, String string2) {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getExecutionProject()
-     */
-    public MavenProject getExecutionProject() {
-        return null;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setExecutionProject(org.apache.maven.project.MavenProject)
-     */
-    public void setExecutionProject(MavenProject mavenProject) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#writeModel(java.io.Writer)
-     */
-    public void writeModel(Writer writer) throws IOException {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#writeOriginalModel(java.io.Writer)
-     */
-    public void writeOriginalModel(Writer writer) throws IOException {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getDependencyArtifacts()
-     */
-    public Set getDependencyArtifacts() {
-        return dependencyArtifacts;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setDependencyArtifacts(java.util.Set)
-     */
-    public void setDependencyArtifacts(Set set) {
-        this.dependencyArtifacts = set;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setReleaseArtifactRepository(org.apache.maven.artifact.repository.
-     * ArtifactRepository)
-     */
-    public void setReleaseArtifactRepository(ArtifactRepository artifactRepository) {
-        // this.releaseArtifactRepository = artifactRepository;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setSnapshotArtifactRepository(org.apache.maven.artifact.repository.
-     * ArtifactRepository)
-     */
-    public void setSnapshotArtifactRepository(ArtifactRepository artifactRepository) {
-        // this.snapshotArtifactRepository = artifactRepository;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setOriginalModel(org.apache.maven.model.Model)
-     */
-    public void setOriginalModel(Model model) {
-        this.originalModel = model;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getOriginalModel()
-     */
-    public Model getOriginalModel() {
-        return originalModel;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getBuildExtensions()
-     */
-    public List getBuildExtensions() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#createArtifacts(org.apache.maven.artifact.factory.ArtifactFactory,
-     * java.lang.String, org.apache.maven.artifact.resolver.filter.ArtifactFilter)
-     */
-    public Set createArtifacts(ArtifactFactory artifactFactory, String string, ArtifactFilter artifactFilter)
-            throws InvalidDependencyVersionException {
-        return Collections.EMPTY_SET;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#addProjectReference(org.apache.maven.project.MavenProject)
-     */
-    public void addProjectReference(MavenProject mavenProject) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#attachArtifact(java.lang.String, java.lang.String, java.io.File)
-     */
-    public void attachArtifact(String string, String string1, File theFile) {}
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getProperties()
-     */
-    public Properties getProperties() {
-        return this.properties;
-    }
-
-    /**
-     * Sets the property.
-     *
-     * @param key the key
-     * @param value the value
-     */
-    public void setProperty(String key, String value) {
-        properties.setProperty(key, value);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getFilters()
-     */
-    public List getFilters() {
-        return Collections.singletonList("");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getProjectReferences()
-     */
-    public Map getProjectReferences() {
-        return Collections.singletonMap("", "");
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#isExecutionRoot()
-     */
-    public boolean isExecutionRoot() {
-        return executionRoot;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#setExecutionRoot(boolean)
-     */
-    public void setExecutionRoot(boolean b) {
-        this.executionRoot = b;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#getDefaultGoal()
-     */
-    public String getDefaultGoal() {
-        return defaultGoal;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.maven.project.MavenProject#replaceWithActiveArtifact(org.apache.maven.artifact.Artifact)
-     */
-    public Artifact replaceWithActiveArtifact(Artifact theArtifact) {
-        return null;
-    }
-}
diff --git a/maven-enforcer-extension/src/site/apt/index.apt b/maven-enforcer-extension/src/site/apt/index.apt
index 1d00ac3..c891e64 100644
--- a/maven-enforcer-extension/src/site/apt/index.apt
+++ b/maven-enforcer-extension/src/site/apt/index.apt
@@ -20,7 +20,7 @@
   ------
   Robert Scholte
   ------
-  May 2021
+  2021-05-01
   ------
 
 Maven Enforcer Extension - The Extended Loving Iron Fist of Maven\x99
diff --git a/maven-enforcer-plugin/src/it/projects/ban-dynamic-versions/verify.groovy b/maven-enforcer-plugin/src/it/projects/ban-dynamic-versions/verify.groovy
index 11abb38..cdf90a9 100644
--- a/maven-enforcer-plugin/src/it/projects/ban-dynamic-versions/verify.groovy
+++ b/maven-enforcer-plugin/src/it/projects/ban-dynamic-versions/verify.groovy
@@ -17,9 +17,9 @@
  * under the License.
  */
 File buildLog = new File( basedir, 'build.log' )
-assert buildLog.text.contains( '[WARNING] Dependency org.apache.maven.plugins.enforcer.its:menforcer138_archiver:jar:2.1.1 (compile) is referenced with a banned dynamic version [1.3,2.1.1]' )
-assert buildLog.text.contains( '[WARNING] Dependency org.apache.maven.plugins.enforcer.its:menforcer138_io:jar:LATEST (compile) is referenced with a banned dynamic version LATEST' )
-assert buildLog.text.contains( '[WARNING] Dependency org.apache.maven.plugins.enforcer.its:menforcer134_model:jar:1.0-SNAPSHOT (compile) is referenced with a banned dynamic version 1.0-SNAPSHOT' )
-assert buildLog.text.contains( '[WARNING] Dependency org.apache.maven.plugins.enforcer.its:menforcer427-a:jar:1.0 (compile) via org.apache.maven.plugins.enforcer.its:menforcer427:jar:1.0 is referenced with a banned dynamic version [1.0,2)' )
+assert buildLog.text.contains( '[ERROR] Dependency org.apache.maven.plugins.enforcer.its:menforcer138_archiver:jar:2.1.1 (compile) is referenced with a banned dynamic version [1.3,2.1.1]' )
+assert buildLog.text.contains( '[ERROR] Dependency org.apache.maven.plugins.enforcer.its:menforcer138_io:jar:LATEST (compile) is referenced with a banned dynamic version LATEST' )
+assert buildLog.text.contains( '[ERROR] Dependency org.apache.maven.plugins.enforcer.its:menforcer134_model:jar:1.0-SNAPSHOT (compile) is referenced with a banned dynamic version 1.0-SNAPSHOT' )
+assert buildLog.text.contains( '[ERROR] Dependency org.apache.maven.plugins.enforcer.its:menforcer427-a:jar:1.0 (compile) via org.apache.maven.plugins.enforcer.its:menforcer427:jar:1.0 is referenced with a banned dynamic version [1.0,2)' )
 assert buildLog.text.contains( '[ERROR] Rule 0: org.apache.maven.enforcer.rules.BanDynamicVersions failed with message' )
 assert buildLog.text.contains( 'Found 4 dependencies with dynamic versions. Look at the warnings emitted above for the details.' )
diff --git a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
index e3b4113..0694a7c 100644
--- a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
+++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
@@ -45,6 +45,7 @@ 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 org.apache.maven.plugins.enforcer.internal.DefaultEnforcementRuleHelper;
 import org.apache.maven.plugins.enforcer.internal.EnforcerRuleCache;
 import org.apache.maven.plugins.enforcer.internal.EnforcerRuleDesc;
 import org.apache.maven.plugins.enforcer.internal.EnforcerRuleManager;
@@ -54,6 +55,7 @@ import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.configuration.DefaultPlexusConfiguration;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
+import org.codehaus.plexus.util.StringUtils;
 
 /**
  * This goal executes the defined enforcer-rules once per module.
@@ -164,6 +166,8 @@ public class EnforceMojo extends AbstractMojo {
     /**
      * List of strings that matches the EnforcerRules to execute. Replacement for the <code>rules</code> property.
      *
+     * @param rulesToExecute a rules to execute
+     * @throws MojoExecutionException when values are incorrect
      * @since 3.2.0
      */
     @Parameter(required = false, property = "enforcer.rules")
@@ -180,6 +184,8 @@ public class EnforceMojo extends AbstractMojo {
     /**
      * List of strings that matches the EnforcerRules to execute.
      *
+     * @param rulesToExecute a rules to execute
+     * @throws MojoExecutionException when values are incorrect
      * @deprecated Use <code>enforcer.rules</code> property instead
      */
     @Parameter(required = false, property = "rules")
@@ -196,7 +202,7 @@ public class EnforceMojo extends AbstractMojo {
     public void execute() throws MojoExecutionException {
         Log log = this.getLog();
 
-        if (isSkip()) {
+        if (skip) {
             log.info("Skipping Rule Enforcement.");
             return;
         }
@@ -213,7 +219,7 @@ public class EnforceMojo extends AbstractMojo {
         rulesList.addAll(additionalRules);
 
         if (rulesList.isEmpty()) {
-            if (isFailIfNoRules()) {
+            if (failIfNoRules) {
                 throw new MojoExecutionException(
                         "No rules are configured. Use the skip flag if you want to disable execution.");
             } else {
@@ -417,10 +423,19 @@ public class EnforceMojo extends AbstractMojo {
     }
 
     /**
-     * @return the fail
+     * Set rule list to skip.
+     *
+     * @param rulesToSkip a rule list
      */
-    public boolean isFail() {
-        return this.fail;
+    public void setRulesToSkip(List<String> rulesToSkip) {
+        if (rulesToSkip == null) {
+            return;
+        }
+        // internally all rules begin from lowercase letter
+        this.rulesToSkip = rulesToSkip.stream()
+                .filter(Objects::nonNull)
+                .map(StringUtils::lowercaseFirstLetter)
+                .collect(Collectors.toList());
     }
 
     /**
@@ -437,10 +452,6 @@ public class EnforceMojo extends AbstractMojo {
         this.failFast = theFailFast;
     }
 
-    public boolean isFailFast() {
-        return failFast;
-    }
-
     private String createRuleMessage(
             int ruleIndex, EnforcerRuleDesc ruleDesc, EnforcerLevel level, EnforcerRuleException e) {
 
@@ -475,59 +486,10 @@ public class EnforceMojo extends AbstractMojo {
         return ruleName;
     }
 
-    /**
-     * @return the skip
-     */
-    public boolean isSkip() {
-        return this.skip;
-    }
-
-    /**
-     * @param theSkip the skip to set
-     */
-    public void setSkip(boolean theSkip) {
-        this.skip = theSkip;
-    }
-
-    /**
-     * @return the failIfNoRules
-     */
-    public boolean isFailIfNoRules() {
-        return this.failIfNoRules;
-    }
-
     /**
      * @param thefailIfNoRules the failIfNoRules to set
      */
     public void setFailIfNoRules(boolean thefailIfNoRules) {
         this.failIfNoRules = thefailIfNoRules;
     }
-
-    /**
-     * @return the project
-     */
-    public MavenProject getProject() {
-        return this.project;
-    }
-
-    /**
-     * @param theProject the project to set
-     */
-    public void setProject(MavenProject theProject) {
-        this.project = theProject;
-    }
-
-    /**
-     * @return the session
-     */
-    public MavenSession getSession() {
-        return this.session;
-    }
-
-    /**
-     * @param theSession the session to set
-     */
-    public void setSession(MavenSession theSession) {
-        this.session = theSession;
-    }
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/DefaultEnforcementRuleHelper.java
similarity index 98%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
rename to maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/DefaultEnforcementRuleHelper.java
index a9f79f1..51536d6 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
+++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/DefaultEnforcementRuleHelper.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.plugins.enforcer.internal;
 
 import java.io.File;
 import java.util.HashMap;
diff --git a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleDesc.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleDesc.java
index cc3fccb..c8cf16f 100644
--- a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleDesc.java
+++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleDesc.java
@@ -27,14 +27,12 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleBase;
  * @author Slawomir Jaranowski
  * @since 3.2.0
  */
-public class EnforcerRuleDesc {
+public final class EnforcerRuleDesc {
 
     private final String name;
 
     private final EnforcerRuleBase rule;
 
-    private final EnforcerLevel level;
-
     /**
      * Create a new Rule Description
      *
@@ -44,20 +42,6 @@ public class EnforcerRuleDesc {
     public EnforcerRuleDesc(String name, EnforcerRuleBase rule) {
         this.name = name;
         this.rule = rule;
-        this.level = EnforcerLevel.ERROR;
-    }
-
-    /**
-     * Create a new Rule Description
-     *
-     * @param name  a rule name
-     * @param rule  a rule instance
-     * @param level a rule level
-     */
-    public EnforcerRuleDesc(String name, EnforcerRuleBase rule, EnforcerLevel level) {
-        this.name = name;
-        this.rule = rule;
-        this.level = level;
     }
 
     public String getName() {
@@ -69,11 +53,11 @@ public class EnforcerRuleDesc {
     }
 
     public EnforcerLevel getLevel() {
-        return level;
+        return rule.getLevel();
     }
 
     @Override
     public String toString() {
-        return String.format("EnforcerRuleDesc[name=%s, rule=%s, level=%s]", name, rule, level);
+        return String.format("EnforcerRuleDesc[name=%s, rule=%s, level=%s]", name, rule, getLevel());
     }
 }
diff --git a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManager.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManager.java
index 2787e50..2d2c9b4 100644
--- a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManager.java
+++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManager.java
@@ -28,7 +28,6 @@ import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 
-import org.apache.maven.enforcer.rule.api.AbstractEnforcerRuleBase;
 import org.apache.maven.enforcer.rule.api.EnforcerLevel;
 import org.apache.maven.enforcer.rule.api.EnforcerLogger;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleBase;
@@ -105,13 +104,12 @@ public class EnforcerRuleManager {
         EnforcerLogger enforcerLoggerWarn = new EnforcerLoggerWarn(log);
 
         for (PlexusConfiguration ruleConfig : rules.getChildren()) {
-            // we need rule level before configuration in order to proper set logger and RuleDesc
+            // we need rule level before configuration in order to proper set logger
             EnforcerLevel ruleLevel = getRuleLevelFromConfig(ruleConfig);
 
-            EnforcerRuleDesc ruleDesc =
-                    createRuleDesc(ruleConfig.getName(), ruleConfig.getAttribute("implementation"), ruleLevel);
+            EnforcerRuleDesc ruleDesc = createRuleDesc(ruleConfig.getName(), ruleConfig.getAttribute("implementation"));
             // setup logger before rule configuration
-            setupLoggerForRule(ruleDesc, ruleLevel == EnforcerLevel.ERROR ? enforcerLoggerError : enforcerLoggerWarn);
+            ruleDesc.getRule().setLog(ruleLevel == EnforcerLevel.ERROR ? enforcerLoggerError : enforcerLoggerWarn);
             if (ruleConfig.getChildCount() > 0) {
                 try {
                     componentConfigurator.configureComponent(ruleDesc.getRule(), ruleConfig, evaluator, classRealm);
@@ -132,24 +130,14 @@ public class EnforcerRuleManager {
         return EnforcerLevel.valueOf(level);
     }
 
-    private void setupLoggerForRule(EnforcerRuleDesc ruleDesc, EnforcerLogger logger) {
-        EnforcerRuleBase rule = ruleDesc.getRule();
-        if (rule instanceof AbstractEnforcerRuleBase) {
-            AbstractEnforcerRuleBase ruleBase = (AbstractEnforcerRuleBase) rule;
-            ruleBase.setLog(logger);
-        }
-    }
-
-    private EnforcerRuleDesc createRuleDesc(String name, String implementation, EnforcerLevel ruleLevel)
-            throws EnforcerRuleManagerException {
+    private EnforcerRuleDesc createRuleDesc(String name, String implementation) throws EnforcerRuleManagerException {
 
         // component name should always start at lowercase character
         String ruleName = Character.toLowerCase(name.charAt(0)) + name.substring(1);
 
         if (plexusContainer.hasComponent(EnforcerRuleBase.class, ruleName)) {
             try {
-                return new EnforcerRuleDesc(
-                        ruleName, plexusContainer.lookup(EnforcerRuleBase.class, ruleName), ruleLevel);
+                return new EnforcerRuleDesc(ruleName, plexusContainer.lookup(EnforcerRuleBase.class, ruleName));
             } catch (ComponentLookupException e) {
                 throw new EnforcerRuleManagerException(e);
             }
@@ -169,7 +157,7 @@ public class EnforcerRuleManager {
 
         try {
             return new EnforcerRuleDesc(
-                    ruleName, (EnforcerRuleBase) Class.forName(ruleClass).newInstance(), ruleLevel);
+                    ruleName, (EnforcerRuleBase) Class.forName(ruleClass).newInstance());
         } catch (Exception e) {
             throw new EnforcerRuleManagerException(
                     "Failed to create enforcer rules with name: " + ruleName + " or for class: " + ruleClass, e);
diff --git a/maven-enforcer-plugin/src/site/apt/index.apt b/maven-enforcer-plugin/src/site/apt/index.apt
index c15c17b..243d4ef 100644
--- a/maven-enforcer-plugin/src/site/apt/index.apt
+++ b/maven-enforcer-plugin/src/site/apt/index.apt
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  Mar 2007
+  2007-03-01
   ------
 
 Maven Enforcer Plugin - The Loving Iron Fist of Maven\x99
diff --git a/maven-enforcer-plugin/src/site/apt/usage.apt.vm b/maven-enforcer-plugin/src/site/apt/usage.apt.vm
index 5d05036..34ecdbe 100644
--- a/maven-enforcer-plugin/src/site/apt/usage.apt.vm
+++ b/maven-enforcer-plugin/src/site/apt/usage.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  Mar 2007
+  2007-03-01
   ------
 
 Usage
diff --git a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestEnforceMojo.java b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestEnforceMojo.java
index 634b2ba..2938a68 100644
--- a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestEnforceMojo.java
+++ b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestEnforceMojo.java
@@ -22,6 +22,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.maven.enforcer.rule.api.EnforcerLevel;
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleError;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
@@ -299,6 +300,7 @@ class TestEnforceMojo {
         EnforcerRuleException ruleException = new EnforcerRuleException("testMessage");
 
         EnforcerRule ruleMock = Mockito.mock(EnforcerRule.class);
+        when(ruleMock.getLevel()).thenReturn(EnforcerLevel.ERROR);
         Mockito.doThrow(ruleException).when(ruleMock).execute(any(EnforcerRuleHelper.class));
         when(ruleManager.createRules(any(), any()))
                 .thenReturn(Collections.singletonList(new EnforcerRuleDesc("mock", ruleMock)));
@@ -323,6 +325,7 @@ class TestEnforceMojo {
         EnforcerRuleException enforcerRuleException = new EnforcerRuleException(npe.getLocalizedMessage(), npe);
 
         EnforcerRule ruleMock = Mockito.mock(EnforcerRule.class);
+        when(ruleMock.getLevel()).thenReturn(EnforcerLevel.ERROR);
         Mockito.doThrow(enforcerRuleException).when(ruleMock).execute(any(EnforcerRuleHelper.class));
 
         when(ruleManager.createRules(any(), any()))
diff --git a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestRule1.java b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestRule1.java
index fdef9a2..5d9bc68 100644
--- a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestRule1.java
+++ b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestRule1.java
@@ -18,11 +18,10 @@
  */
 package org.apache.maven.plugins.enforcer;
 
-import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
 
-public class TestRule1 extends AbstractNonCacheableEnforcerRule {
+public class TestRule1 extends AbstractEnforcerRule {
 
     @Override
-    public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {}
+    public void execute() {}
 }
diff --git a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestRule2.java b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestRule2.java
index 4b2a2c5..adb19a0 100644
--- a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestRule2.java
+++ b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestRule2.java
@@ -18,11 +18,10 @@
  */
 package org.apache.maven.plugins.enforcer;
 
-import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
 
-public class TestRule2 extends AbstractNonCacheableEnforcerRule {
+public class TestRule2 extends AbstractEnforcerRule {
 
     @Override
-    public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {}
+    public void execute() {}
 }
diff --git a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManagerTest.java b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManagerTest.java
index a31cca7..7245758 100644
--- a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManagerTest.java
+++ b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManagerTest.java
@@ -82,7 +82,7 @@ class EnforcerRuleManagerTest {
                 new EnforcerRuleManager(sessionProvider, mojoExecutionProvider, componentConfigurator, plexusContainer);
     }
 
-    void setupMocks() throws Exception {
+    void setupMocks() {
         setupMocks(false);
     }
 
@@ -257,6 +257,6 @@ class EnforcerRuleManagerTest {
 
         List<EnforcerRuleDesc> rules = enforcerRuleManager.createRules(configuration, mock(Log.class));
         assertThat(rules).hasSize(1);
-        assertThat(rules.get(0).getLevel()).isEqualTo(EnforcerLevel.WARN);
+        assertThat(rules.get(0).getLevel()).isEqualTo(EnforcerLevel.ERROR);
     }
 }
diff --git a/pom.xml b/pom.xml
index 721e986..15e7173 100644
--- a/pom.xml
+++ b/pom.xml
@@ -154,11 +154,6 @@
         <artifactId>commons-lang3</artifactId>
         <version>3.12.0</version>
       </dependency>
-      <dependency>
-        <groupId>org.apache.maven.shared</groupId>
-        <artifactId>maven-shared-utils</artifactId>
-        <version>3.3.4</version>
-      </dependency>
       <dependency>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-utils</artifactId>