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

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


The following commit(s) were added to refs/heads/master by this push:
     new da1351a  [MENFORCER-470] Add scopes to DependencyConvergence rule
da1351a is described below

commit da1351ad49793cfc7b6bdf5aed7c35579d9abc65
Author: Alexey Anufriev <[email protected]>
AuthorDate: Wed Feb 1 12:27:51 2023 +0100

    [MENFORCER-470] Add scopes to DependencyConvergence rule
---
 .../enforcer/rules/dependency/DependencyConvergence.java   | 14 +++++++-------
 enforcer-rules/src/site/apt/dependencyConvergence.apt.vm   |  7 +++++++
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git 
a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java
 
b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java
index eb583c7..4c6fbdd 100644
--- 
a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java
+++ 
b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.java
@@ -22,10 +22,12 @@ import javax.inject.Inject;
 import javax.inject.Named;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;
 import org.apache.maven.enforcer.rules.utils.ArtifactUtils;
@@ -35,9 +37,6 @@ import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.graph.DependencyNode;
 import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
 
-import static org.apache.maven.artifact.Artifact.SCOPE_PROVIDED;
-import static org.apache.maven.artifact.Artifact.SCOPE_TEST;
-
 /**
  * @author <a href="mailto:[email protected]";>Rex Hoffman</a>
  */
@@ -50,6 +49,8 @@ public final class DependencyConvergence extends 
AbstractStandardEnforcerRule {
 
     private List<String> excludes;
 
+    private List<String> scopes = Arrays.asList(Artifact.SCOPE_COMPILE, 
Artifact.SCOPE_RUNTIME, Artifact.SCOPE_SYSTEM);
+
     private DependencyVersionMap dependencyVersionMap;
 
     private final ResolveUtil resolveUtil;
@@ -71,8 +72,7 @@ public final class DependencyConvergence extends 
AbstractStandardEnforcerRule {
                         return !dependency.isOptional()
                                 // regular scope selectors only discard 
transitive dependencies
                                 // and always allow direct dependencies
-                                && !dependency.getScope().equals(SCOPE_TEST)
-                                && 
!dependency.getScope().equals(SCOPE_PROVIDED);
+                                && scopes.contains(dependency.getScope());
                     }
 
                     @Override
@@ -142,7 +142,7 @@ public final class DependencyConvergence extends 
AbstractStandardEnforcerRule {
     @Override
     public String toString() {
         return String.format(
-                "DependencyConvergence[includes=%s, excludes=%s, 
uniqueVersions=%b]",
-                includes, excludes, uniqueVersions);
+                "DependencyConvergence[includes=%s, excludes=%s, 
uniqueVersions=%b, scopes=%s]",
+                includes, excludes, uniqueVersions, String.join(",", scopes));
     }
 }
diff --git a/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm 
b/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm
index ca9d044..805c7df 100644
--- a/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm
+++ b/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm
@@ -139,6 +139,9 @@ and
     * <<excludes>> - A list of artifacts for which dependency convergence 
should not be enforced. These are exceptions
       to the includes.
 
+    * <<scopes>> - A list of scopes of artifacts for which dependency 
convergence should be enforced. Not specifying
+      any scopes is interpreted as having the following scopes activated: 
compile, runtime, system.
+
     []
 
   The format for artifacts is 
groupId[:artifactId][:version][:type][:scope][:classifier] where artifactId, 
version,
@@ -147,6 +150,10 @@ and
 
 +---------------------------------------------
       <dependencyConvergence>
+        <scopes>
+          <scope>compile</scope>
+          <scope>runtime</scope>
+        </scopes>
         <includes>
           <include>org.slf4j</include>
           <include>org.apache.commons</include>

Reply via email to