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 2026/09/30 18:30:54 UTC
(maven-enforcer) branch master updated: Skip banDuplicatePomDependencyVersions ITs on Maven 3.10+
This is an automated email from the ASF dual-hosted git repository.
slawekjaranowski 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 cd13c7ac Skip banDuplicatePomDependencyVersions ITs on Maven 3.10+
cd13c7ac is described below
commit cd13c7acba9cae31c9394519e5fc5c650a18d15f
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Tue Sep 29 20:34:38 2026 +0200
Skip banDuplicatePomDependencyVersions ITs on Maven 3.10+
Maven 3.10.0 promoted the duplicate dependency declaration check to a
POM reading error, like Maven 4 does. The build fails while the project
is being read, before the enforcer plugin is executed, so the three ITs
asserting the rule error message cannot pass there.
Extend the existing Maven 4 exclusion to 3.10+ and note in the rule
documentation that the rule is only useful with older Maven versions.
Co-Authored-By: Claude Opus 5 (1M context) <no...@anthropic.com>
---
.../maven/enforcer/rules/BanDuplicatePomDependencyVersions.java | 3 ++-
.../src/site/markdown/banDuplicatePomDependencyVersions.md.vm | 2 ++
.../projects/ban-duplicate-dependencies-versions/invoker.properties | 4 ++--
.../ban-pom-dependency-version-utf8-with-bom/invoker.properties | 4 ++--
.../src/it/projects/ban-pom-dependency-version/invoker.properties | 4 ++--
5 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/BanDuplicatePomDependencyVersions.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/BanDuplicatePomDependencyVersions.java
index a9f599fc..a47723ed 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/BanDuplicatePomDependencyVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/BanDuplicatePomDependencyVersions.java
@@ -41,7 +41,8 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
/**
* Since Maven 3 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique. Early versions of Maven
- * 3 already warn, this rule can force to break a build for this reason.
+ * 3 already warn, this rule can force to break a build for this reason. Maven 3.10.0 and Maven 4 reject such POMs
+ * themselves, before this rule is executed.
*
* @author Robert Scholte
* @since 1.3
diff --git a/enforcer-rules/src/site/markdown/banDuplicatePomDependencyVersions.md.vm b/enforcer-rules/src/site/markdown/banDuplicatePomDependencyVersions.md.vm
index 484c2c17..66c3137e 100644
--- a/enforcer-rules/src/site/markdown/banDuplicatePomDependencyVersions.md.vm
+++ b/enforcer-rules/src/site/markdown/banDuplicatePomDependencyVersions.md.vm
@@ -28,6 +28,8 @@ under the License.
This rule checks that there are no duplicate dependencies declared in the POM of the project. Duplicate dependencies are dependencies which have the same group id, artifact id, type and classifier.
+**Note:** Maven 3.10.0 and Maven 4 reject such duplicate declarations themselves, while reading the POM, so the build fails before this rule is executed. The rule is only useful with Maven versions older than 3.10.0, which merely warn about duplicates.
+
Sample Plugin Configuration:
```xml
diff --git a/maven-enforcer-plugin/src/it/projects/ban-duplicate-dependencies-versions/invoker.properties b/maven-enforcer-plugin/src/it/projects/ban-duplicate-dependencies-versions/invoker.properties
index 6639b519..93838fe8 100644
--- a/maven-enforcer-plugin/src/it/projects/ban-duplicate-dependencies-versions/invoker.properties
+++ b/maven-enforcer-plugin/src/it/projects/ban-duplicate-dependencies-versions/invoker.properties
@@ -17,5 +17,5 @@
invoker.buildResult=failure
-# Maven 4 check itself such rules
-invoker.maven.version = !4+
+# Maven 3.10+ and Maven 4 check such rules themselves
+invoker.maven.version = !3.10+,!4+
diff --git a/maven-enforcer-plugin/src/it/projects/ban-pom-dependency-version-utf8-with-bom/invoker.properties b/maven-enforcer-plugin/src/it/projects/ban-pom-dependency-version-utf8-with-bom/invoker.properties
index 6639b519..93838fe8 100644
--- a/maven-enforcer-plugin/src/it/projects/ban-pom-dependency-version-utf8-with-bom/invoker.properties
+++ b/maven-enforcer-plugin/src/it/projects/ban-pom-dependency-version-utf8-with-bom/invoker.properties
@@ -17,5 +17,5 @@
invoker.buildResult=failure
-# Maven 4 check itself such rules
-invoker.maven.version = !4+
+# Maven 3.10+ and Maven 4 check such rules themselves
+invoker.maven.version = !3.10+,!4+
diff --git a/maven-enforcer-plugin/src/it/projects/ban-pom-dependency-version/invoker.properties b/maven-enforcer-plugin/src/it/projects/ban-pom-dependency-version/invoker.properties
index 6639b519..93838fe8 100644
--- a/maven-enforcer-plugin/src/it/projects/ban-pom-dependency-version/invoker.properties
+++ b/maven-enforcer-plugin/src/it/projects/ban-pom-dependency-version/invoker.properties
@@ -17,5 +17,5 @@
invoker.buildResult=failure
-# Maven 4 check itself such rules
-invoker.maven.version = !4+
+# Maven 3.10+ and Maven 4 check such rules themselves
+invoker.maven.version = !3.10+,!4+