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>