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 2022/12/27 10:40:54 UTC

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

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 8c624b48e6436df3eba66a1595824f243bafcf53
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Tue Dec 27 11:40:28 2022 +0100

    [MENFORCER-450] Code cleanup
    
    - remove not needed throws
    - remove custom EnforcerExpressionEvaluator
    - remove not needed toString()
    - use diamond operator
---
 .../apache/maven/plugins/enforcer/AlwaysPass.java  |  3 +-
 .../enforcer/BanDependencyManagementScope.java     |  6 +---
 .../BanDuplicatePomDependencyVersions.java         |  2 +-
 .../maven/plugins/enforcer/BanDynamicVersions.java |  7 +---
 .../enforcer/BanTransitiveDependencies.java        | 14 ++------
 .../enforcer/EnforcerExpressionEvaluator.java      | 42 ----------------------
 .../maven/plugins/enforcer/EvaluateBeanshell.java  |  7 +---
 .../plugins/enforcer/ReactorModuleConvergence.java | 11 +++---
 .../plugins/enforcer/RequireFileChecksum.java      |  4 +--
 .../plugins/enforcer/RequirePluginVersions.java    | 16 +++------
 .../plugins/enforcer/RequirePrerequisite.java      |  4 +--
 .../plugins/enforcer/RequireSameVersions.java      |  2 +-
 .../plugins/enforcer/utils/ArtifactMatcher.java    |  8 ++---
 .../enforcer/utils/DependencyVersionMap.java       |  7 ++--
 .../utils/NormalizeLineSeparatorReader.java        |  2 +-
 .../enforcer/BanDependencyManagementScopeTest.java |  4 +--
 .../utils/MockEnforcerExpressionEvaluator.java     |  7 ++--
 .../enforcer/utils/TestArtifactMatcher.java        |  8 ++---
 .../utils/TestMockEnforcerExpressionEvaluator.java |  6 ++--
 .../maven/plugins/enforcer/DisplayInfoMojo.java    | 32 ++---------------
 .../apache/maven/plugins/enforcer/EnforceMojo.java | 18 +++-------
 21 files changed, 44 insertions(+), 166 deletions(-)

diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysPass.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysPass.java
index 75bfc63..4ffca41 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysPass.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysPass.java
@@ -18,7 +18,6 @@
  */
 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.plugin.logging.Log;
 
@@ -29,7 +28,7 @@ import org.apache.maven.plugin.logging.Log;
 public class AlwaysPass extends AbstractNonCacheableEnforcerRule {
 
     @Override
-    public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
+    public void execute(EnforcerRuleHelper helper) {
         final Log log = helper.getLog();
 
         String message = getMessage();
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDependencyManagementScope.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDependencyManagementScope.java
index 89a7b33..7507f24 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDependencyManagementScope.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDependencyManagementScope.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.enforcer.rule.api.EnforcerRule2;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
@@ -85,13 +84,10 @@ public class BanDependencyManagementScope extends AbstractNonCacheableEnforcerRu
             }
         } catch (ExpressionEvaluationException e) {
             throw new EnforcerRuleException("Cannot resolve expression: " + e.getCause(), e);
-        } catch (InvalidVersionSpecificationException e) {
-            throw new EnforcerRuleException("Invalid version range give in excludes " + e.getCause(), e);
         }
     }
 
-    protected List<Dependency> getViolatingDependencies(Log logger, DependencyManagement depMgmt)
-            throws InvalidVersionSpecificationException {
+    protected List<Dependency> getViolatingDependencies(Log logger, DependencyManagement depMgmt) {
         final ArtifactMatcher excludesMatcher;
         if (excludes != null) {
             excludesMatcher = new ArtifactMatcher(excludes, Collections.emptyList());
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDuplicatePomDependencyVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDuplicatePomDependencyVersions.java
index 3eeaac1..e985262 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDuplicatePomDependencyVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDuplicatePomDependencyVersions.java
@@ -156,7 +156,7 @@ public class BanDuplicatePomDependencyVersions extends AbstractNonCacheableEnfor
         }
     }
 
-    private Map<String, Integer> validateDependencies(List<Dependency> dependencies) throws EnforcerRuleException {
+    private Map<String, Integer> validateDependencies(List<Dependency> dependencies) {
         Map<String, Integer> duplicateDeps = new HashMap<>();
         Set<String> deps = new HashSet<>();
         for (Dependency dependency : dependencies) {
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDynamicVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDynamicVersions.java
index 2212fb6..8dadd4c 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDynamicVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanDynamicVersions.java
@@ -30,7 +30,6 @@ import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.logging.Log;
@@ -292,11 +291,7 @@ public class BanDynamicVersions extends AbstractNonCacheableEnforcerRule {
 
         @Override
         public boolean test(DependencyNode depNode) {
-            try {
-                return artifactMatcher.match(ArtifactUtils.toArtifact(depNode));
-            } catch (InvalidVersionSpecificationException e) {
-                throw new IllegalArgumentException("Invalid version found for dependency node " + depNode, e);
-            }
+            return artifactMatcher.match(ArtifactUtils.toArtifact(depNode));
         }
     }
 
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
index 3bc5de0..bf52d19 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
@@ -24,7 +24,6 @@ import java.util.stream.Collectors;
 
 import com.google.common.base.Strings;
 import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
@@ -67,16 +66,13 @@ public class BanTransitiveDependencies extends AbstractNonCacheableEnforcerRule
     /**
      * Searches dependency tree recursively for transitive dependencies that are not excluded, while generating nice
      * info message along the way.
-     *
-     * @throws InvalidVersionSpecificationException
      */
     private static boolean searchTree(
             DependencyNode node,
             int level,
             ArtifactMatcher excludes,
             Set<Dependency> directDependencies,
-            StringBuilder message)
-            throws InvalidVersionSpecificationException {
+            StringBuilder message) {
 
         List<DependencyNode> children = node.getChildren();
 
@@ -146,12 +142,8 @@ public class BanTransitiveDependencies extends AbstractNonCacheableEnforcerRule
 
         DependencyNode rootNode = ArtifactUtils.resolveTransitiveDependencies(helper);
         StringBuilder generatedMessage = new StringBuilder();
-        try {
-            if (searchTree(rootNode, 0, exclusions, directDependencies, generatedMessage)) {
-                throw new EnforcerRuleException(ofNullable(getMessage()).orElse(generatedMessage.toString()));
-            }
-        } catch (InvalidVersionSpecificationException e) {
-            throw new EnforcerRuleException("Error: Invalid version range.", e);
+        if (searchTree(rootNode, 0, exclusions, directDependencies, generatedMessage)) {
+            throw new EnforcerRuleException(ofNullable(getMessage()).orElse(generatedMessage.toString()));
         }
     }
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EnforcerExpressionEvaluator.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EnforcerExpressionEvaluator.java
deleted file mode 100644
index 0065b24..0000000
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EnforcerExpressionEvaluator.java
+++ /dev/null
@@ -1,42 +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.execution.MavenSession;
-import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
-
-/**
- * The Class EnforcerExpressionEvaluator. This class wraps the PluginParameterExpressionEvaluator because it can't be
- * accessed directly in 2.0.x so we must create a new one.
- *
- * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
- */
-public class EnforcerExpressionEvaluator extends PluginParameterExpressionEvaluator {
-
-    /**
-     * The Constructor.
-     *
-     * @param mavenSession {@link MavenSession}
-     * @param theExecution {@link MojoExecution}
-     */
-    public EnforcerExpressionEvaluator(MavenSession mavenSession, MojoExecution theExecution) {
-        super(mavenSession, theExecution);
-    }
-}
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
index c80b9ca..9adf525 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
@@ -34,12 +34,7 @@ import org.codehaus.plexus.util.StringUtils;
 public class EvaluateBeanshell extends AbstractNonCacheableEnforcerRule {
 
     /** Beanshell interpreter. */
-    private static final ThreadLocal<Interpreter> INTERPRETER = new ThreadLocal<Interpreter>() {
-        @Override
-        protected Interpreter initialValue() {
-            return new Interpreter();
-        }
-    };
+    private static final ThreadLocal<Interpreter> INTERPRETER = ThreadLocal.withInitial(Interpreter::new);
 
     /** The condition to be evaluated.
      *
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/ReactorModuleConvergence.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/ReactorModuleConvergence.java
index e1e2082..b08479b 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/ReactorModuleConvergence.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/ReactorModuleConvergence.java
@@ -80,7 +80,7 @@ public class ReactorModuleConvergence extends AbstractNonCacheableEnforcerRule {
                 sb.append(System.lineSeparator());
             }
             throw new EnforcerRuleException(
-                    "Module parents have been found which could not be found in the reactor." + sb.toString());
+                    "Module parents have been found which could not be found in the reactor." + sb);
         }
     }
 
@@ -100,7 +100,7 @@ public class ReactorModuleConvergence extends AbstractNonCacheableEnforcerRule {
                 sb.append(mavenProject.getId());
                 sb.append(System.lineSeparator());
             }
-            throw new EnforcerRuleException("Reactor contains modules without parents." + sb.toString());
+            throw new EnforcerRuleException("Reactor contains modules without parents." + sb);
         }
     }
 
@@ -128,7 +128,7 @@ public class ReactorModuleConvergence extends AbstractNonCacheableEnforcerRule {
                 }
             }
             throw new EnforcerRuleException(
-                    "Reactor modules contains dependencies which do not reference the reactor." + sb.toString());
+                    "Reactor modules contains dependencies which do not reference the reactor." + sb);
             // CHECKSTYLE_ON: LineLength
         }
     }
@@ -154,8 +154,7 @@ public class ReactorModuleConvergence extends AbstractNonCacheableEnforcerRule {
                 sb.append(mavenProject.getParent().getId());
                 sb.append(System.lineSeparator());
             }
-            throw new EnforcerRuleException(
-                    "Reactor modules have parents which contain a wrong version." + sb.toString());
+            throw new EnforcerRuleException("Reactor modules have parents which contain a wrong version." + sb);
         }
     }
 
@@ -175,7 +174,7 @@ public class ReactorModuleConvergence extends AbstractNonCacheableEnforcerRule {
                 sb.append(mavenProject.getId());
                 sb.append(System.lineSeparator());
             }
-            throw new EnforcerRuleException("The reactor contains different versions." + sb.toString());
+            throw new EnforcerRuleException("The reactor contains different versions." + sb);
         }
     }
 
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFileChecksum.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFileChecksum.java
index c2a9379..80003ba 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFileChecksum.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFileChecksum.java
@@ -19,9 +19,9 @@
 package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
 
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
@@ -124,7 +124,7 @@ public class RequireFileChecksum extends AbstractNonCacheableEnforcerRule {
     }
 
     protected String calculateChecksum() throws EnforcerRuleException {
-        try (InputStream inputStream = new FileInputStream(this.file)) {
+        try (InputStream inputStream = Files.newInputStream(this.file.toPath())) {
             return calculateChecksum(inputStream);
         } catch (IOException e) {
             throw new EnforcerRuleException("Unable to calculate checksum", e);
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
index 2b76b9a..429adce 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
@@ -18,7 +18,6 @@
  */
 package org.apache.maven.plugins.enforcer;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -65,7 +64,6 @@ import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.resolution.ArtifactRequest;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
@@ -233,7 +231,7 @@ public class RequirePluginVersions extends AbstractNonCacheableEnforcerRule {
                         + pluginWrapper.getVersion() + " source: " + pluginWrapper.getSource());
             }
             // now look for the versions that aren't valid and add to a list.
-            List<Plugin> failures = new ArrayList<Plugin>();
+            List<Plugin> failures = new ArrayList<>();
 
             for (Plugin plugin : allPlugins) {
                 if (!hasValidVersionSpecified(helper, plugin, pluginWrappers)) {
@@ -353,7 +351,7 @@ public class RequirePluginVersions extends AbstractNonCacheableEnforcerRule {
         if (StringUtils.isNotEmpty(uncheckedPluginsList)) {
             // make sure there is a collection to add to.
             if (uncheckedPlugins == null) {
-                uncheckedPlugins = new HashSet<String>();
+                uncheckedPlugins = new HashSet<>();
             } else if (!uncheckedPlugins.isEmpty() && log != null) {
                 log.warn("The parameter 'unCheckedPlugins' is deprecated. Use 'unCheckedPluginList' instead");
             }
@@ -484,10 +482,9 @@ public class RequirePluginVersions extends AbstractNonCacheableEnforcerRule {
      * @return the bound plugins
      * @throws PluginNotFoundException the plugin not found exception
      * @throws LifecycleExecutionException the lifecycle execution exception
-     * @throws IllegalAccessException the illegal access exception
      */
     protected Set<Plugin> getBoundPlugins(MavenProject project, String thePhases)
-            throws PluginNotFoundException, LifecycleExecutionException, IllegalAccessException {
+            throws PluginNotFoundException, LifecycleExecutionException {
 
         Set<Plugin> allPlugins = new HashSet<>();
 
@@ -813,13 +810,8 @@ public class RequirePluginVersions extends AbstractNonCacheableEnforcerRule {
      *
      * @param project the project
      * @return the all plugin entries wrapped in a PluginWrapper Object
-     * @throws ArtifactResolutionException the artifact resolution exception
-     * @throws ArtifactNotFoundException the artifact not found exception
-     * @throws IOException Signals that an I/O exception has occurred.
-     * @throws XmlPullParserException the xml pull parser exception
      */
-    protected List<PluginWrapper> getAllPluginEntries(MavenProject project)
-            throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException {
+    protected List<PluginWrapper> getAllPluginEntries(MavenProject project) {
         List<PluginWrapper> plugins = new ArrayList<>();
         // now find all the plugin entries, either in
         // build.plugins or build.pluginManagement.plugins, profiles.plugins and reporting
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java
index 255bf28..4d950aa 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePrerequisite.java
@@ -104,9 +104,7 @@ public class RequirePrerequisite extends AbstractNonCacheableEnforcerRule {
                             + " ) doesn't match the required version: " + mavenVersion);
                 }
             }
-        } catch (ExpressionEvaluationException e) {
-            throw new EnforcerRuleException(e.getMessage(), e);
-        } catch (InvalidVersionSpecificationException e) {
+        } catch (ExpressionEvaluationException | InvalidVersionSpecificationException e) {
             throw new EnforcerRuleException(e.getMessage(), e);
         }
     }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireSameVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireSameVersions.java
index c3c8a3d..800e5ec 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireSameVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireSameVersions.java
@@ -104,7 +104,7 @@ public class RequireSameVersions extends AbstractNonCacheableEnforcerRule {
                 if (regEx.matcher(artifact.getDependencyConflictId()).matches()) {
                     String version = uniqueVersions ? artifact.getVersion() : artifact.getBaseVersion();
                     if (!versionMembers.containsKey(version)) {
-                        versionMembers.put(version, new ArrayList<String>());
+                        versionMembers.put(version, new ArrayList<>());
                     }
                     versionMembers.get(version).add(artifact.getDependencyConflictId() + source);
                 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/ArtifactMatcher.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/ArtifactMatcher.java
index cbc9d64..c3e8653 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/ArtifactMatcher.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/ArtifactMatcher.java
@@ -190,7 +190,7 @@ public final class ArtifactMatcher {
                 .forEach(includePatterns::add));
     }
 
-    private boolean match(Function<Pattern, Boolean> matcher) throws InvalidVersionSpecificationException {
+    private boolean match(Function<Pattern, Boolean> matcher) {
         return excludePatterns.stream().anyMatch(matcher::apply)
                 && includePatterns.stream().noneMatch(matcher::apply);
     }
@@ -201,9 +201,8 @@ public final class ArtifactMatcher {
      * @param artifact the artifact to match
      * @return {@code true} if artifact matches any {@link #excludePatterns} and none of the {@link #includePatterns}, otherwise
      *         {@code false}
-     * @throws InvalidVersionSpecificationException if any pattern contains an invalid version range
      */
-    public boolean match(Artifact artifact) throws InvalidVersionSpecificationException {
+    public boolean match(Artifact artifact) {
         return match(p -> p.match(artifact));
     }
 
@@ -213,9 +212,8 @@ public final class ArtifactMatcher {
      * @param dependency the dependency to match
      * @return {@code true} if dependency matches any {@link #excludePatterns} and none of the {@link #includePatterns},
      *         otherwise {@code false}
-     * @throws InvalidVersionSpecificationException if any pattern contains an invalid version range
      */
-    public boolean match(Dependency dependency) throws InvalidVersionSpecificationException {
+    public boolean match(Dependency dependency) {
         return match(p -> p.match(dependency));
     }
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
index 858d390..5f3ce3b 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.plugin.logging.Log;
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.graph.DependencyNode;
@@ -102,8 +101,7 @@ public class DependencyVersionMap implements DependencyVisitor, ParentNodeProvid
         return false;
     }
 
-    public List<List<DependencyNode>> getConflictedVersionNumbers(List<String> includes, List<String> excludes)
-            throws EnforcerRuleException {
+    public List<List<DependencyNode>> getConflictedVersionNumbers(List<String> includes, List<String> excludes) {
         List<String> formattedIncludes = formatPatterns(includes);
         List<String> formattedExcludes = formatPatterns(excludes);
         List<List<DependencyNode>> output = new ArrayList<>();
@@ -124,8 +122,7 @@ public class DependencyVersionMap implements DependencyVisitor, ParentNodeProvid
         return output;
     }
 
-    private static boolean includeArtifact(DependencyNode node, List<String> includes, List<String> excludes)
-            throws EnforcerRuleException {
+    private static boolean includeArtifact(DependencyNode node, List<String> includes, List<String> excludes) {
         boolean included = includes == null || includes.isEmpty();
         if (!included) {
             for (String pattern : includes) {
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/NormalizeLineSeparatorReader.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/NormalizeLineSeparatorReader.java
index 8904386..50fbe02 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/NormalizeLineSeparatorReader.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/NormalizeLineSeparatorReader.java
@@ -76,7 +76,7 @@ public class NormalizeLineSeparatorReader extends FilterReader {
             }
             return MatchResult.NO_MATCH;
         }
-    };
+    }
 
     final LineSeparator lineSeparator;
 
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BanDependencyManagementScopeTest.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BanDependencyManagementScopeTest.java
index 7b08d69..c74fc3e 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BanDependencyManagementScopeTest.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BanDependencyManagementScopeTest.java
@@ -20,8 +20,6 @@ package org.apache.maven.plugins.enforcer;
 
 import java.util.Collections;
 
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.plugin.logging.SystemStreamLog;
@@ -31,7 +29,7 @@ import org.junit.jupiter.api.Test;
 
 class BanDependencyManagementScopeTest {
     @Test
-    void testGetViolatingDependencies() throws EnforcerRuleException, InvalidVersionSpecificationException {
+    void testGetViolatingDependencies() {
         BanDependencyManagementScope rule = new BanDependencyManagementScope();
         DependencyManagement depMgmt = new DependencyManagement();
         Dependency depWithoutScope = createDependency("myGroup", "artifact1", null);
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
index 7aaee0b..893ca70 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
@@ -20,14 +20,13 @@ package org.apache.maven.plugins.enforcer.utils;
 
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecution;
+import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugins.enforcer.EnforcerExpressionEvaluator;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
 /**
  * The Class MockEnforcerExpressionEvaluator.
  */
-public class MockEnforcerExpressionEvaluator extends EnforcerExpressionEvaluator {
+public class MockEnforcerExpressionEvaluator extends PluginParameterExpressionEvaluator {
     /**
      * Instantiates a new mock enforcer expression evaluator.
      *
@@ -38,7 +37,7 @@ public class MockEnforcerExpressionEvaluator extends EnforcerExpressionEvaluator
     }
 
     @Override
-    public Object evaluate(String expr) throws ExpressionEvaluationException {
+    public Object evaluate(String expr) {
         if (expr != null) {
             // just remove the ${ } and return the name as the value
             return expr.replaceAll("\\$\\{|}", "");
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestArtifactMatcher.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestArtifactMatcher.java
index 66ebb98..ffdc9df 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestArtifactMatcher.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestArtifactMatcher.java
@@ -40,7 +40,7 @@ public class TestArtifactMatcher {
     Collection<String> ignorePatterns = new ArrayList<>();
 
     @Test
-    public void testPatternInvalidInput() throws InvalidVersionSpecificationException {
+    public void testPatternInvalidInput() {
         try {
             new Pattern(null);
             fail("NullPointerException expected.");
@@ -140,8 +140,7 @@ public class TestArtifactMatcher {
             final String scope,
             final String type,
             final String classifier,
-            boolean expectedResult)
-            throws InvalidVersionSpecificationException {
+            boolean expectedResult) {
         assertEquals(
                 expectedResult,
                 new ArtifactMatcher.Pattern(pattern)
@@ -155,8 +154,7 @@ public class TestArtifactMatcher {
             final String versionRange,
             final String scope,
             final String type,
-            final boolean expectedResult)
-            throws InvalidVersionSpecificationException {
+            final boolean expectedResult) {
         assertEquals(
                 expectedResult, matcher.match(createMockArtifact(groupId, artifactId, versionRange, scope, type, "")));
     }
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
index fc6c84c..4a9feff 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
@@ -19,7 +19,7 @@
 package org.apache.maven.plugins.enforcer.utils;
 
 import org.apache.maven.execution.MavenSession;
-import org.apache.maven.plugins.enforcer.EnforcerExpressionEvaluator;
+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;
@@ -39,7 +39,7 @@ public class TestMockEnforcerExpressionEvaluator {
     public void testEvaluate() {
         MavenSession session = EnforcerTestUtils.getMavenSession();
 
-        EnforcerExpressionEvaluator ev = new MockEnforcerExpressionEvaluator(session);
+        PluginParameterExpressionEvaluator ev = new MockEnforcerExpressionEvaluator(session);
         assertMatch(ev, "SNAPSHOT");
         assertMatch(ev, "RELEASE");
         assertMatch(ev, "SNAPSHOT");
@@ -53,7 +53,7 @@ public class TestMockEnforcerExpressionEvaluator {
      * @param ev the ev
      * @param exp the exp
      */
-    public void assertMatch(EnforcerExpressionEvaluator ev, String exp) {
+    public void assertMatch(PluginParameterExpressionEvaluator ev, String exp) {
         // the mock enforcer should return the name of the expression as the value.
         try {
             assertEquals(exp, ev.evaluate("${" + exp + "}"));
diff --git a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
index 0545552..5e77260 100644
--- a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
+++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
@@ -20,16 +20,8 @@ package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.PlexusConstants;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
 /**
  * This goal displays the current platform information.
@@ -37,13 +29,7 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
  * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
  */
 @Mojo(name = "display-info", threadSafe = true)
-public class DisplayInfoMojo extends AbstractMojo implements Contextualizable {
-
-    /**
-     * MojoExecution needed by the ExpressionEvaluator
-     */
-    @Parameter(defaultValue = "${mojoExecution}", readonly = true, required = true)
-    protected MojoExecution mojoExecution;
+public class DisplayInfoMojo extends AbstractMojo {
 
     /**
      * The MavenSession
@@ -51,24 +37,10 @@ public class DisplayInfoMojo extends AbstractMojo implements Contextualizable {
     @Parameter(defaultValue = "${session}", readonly = true, required = true)
     protected MavenSession session;
 
-    /**
-     * POM
-     */
-    @Parameter(defaultValue = "${project}", readonly = true, required = true)
-    protected MavenProject project;
-
-    // set by the contextualize method. Only way to get the
-    // plugin's container in 2.0.x
-    protected PlexusContainer container;
-
-    public void contextualize(Context context) throws ContextException {
-        container = (PlexusContainer) context.get(PlexusConstants.PLEXUS_KEY);
-    }
-
     /**
      * Entry point to the mojo
      */
-    public void execute() throws MojoExecutionException {
+    public void execute() {
         String mavenVersion = session.getSystemProperties().getProperty("maven.version");
         String javaVersion = System.getProperty("java.version");
         String javaVendor = System.getProperty("java.vendor");
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 a62738a..361e970 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
@@ -31,17 +31,15 @@ import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
 import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
 /**
  * This goal executes the defined enforcer-rules once per module.
@@ -55,7 +53,7 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
         requiresDependencyCollection = ResolutionScope.TEST,
         threadSafe = true)
 // CHECKSTYLE_ON: LineLength
-public class EnforceMojo extends AbstractMojo implements Contextualizable {
+public class EnforceMojo extends AbstractMojo {
     /**
      * This is a static variable used to persist the cached results across plugin invocations.
      */
@@ -124,15 +122,9 @@ public class EnforceMojo extends AbstractMojo implements Contextualizable {
     @Parameter(property = "enforcer.ignoreCache", defaultValue = "false")
     protected boolean ignoreCache = false;
 
-    // set by the contextualize method. Only way to get the
-    // plugin's container in 2.0.x
+    @Component
     protected PlexusContainer container;
 
-    @Override
-    public void contextualize(Context context) throws ContextException {
-        container = (PlexusContainer) context.get(PlexusConstants.PLEXUS_KEY);
-    }
-
     private boolean havingRules() {
         return rules != null && rules.length > 0;
     }
@@ -141,7 +133,7 @@ public class EnforceMojo extends AbstractMojo implements Contextualizable {
     public void execute() throws MojoExecutionException {
         Log log = this.getLog();
 
-        EnforcerExpressionEvaluator evaluator = new EnforcerExpressionEvaluator(session, mojoExecution);
+        PluginParameterExpressionEvaluator evaluator = new PluginParameterExpressionEvaluator(session, mojoExecution);
         if (commandLineRules != null && commandLineRules.length > 0) {
             this.rules = createRulesFromCommandLineOptions();
         }