Details
-
Bug
-
Resolution: Cannot Reproduce
-
Major
-
None
-
2.0.0
-
None
-
None
Description
In certain circumstances, it seems that the Maven resolver (in v2.0.0) is ignoring transitive exclusions.
Relevant pom.xml:
<dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>${drools.version}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>${drools.version}</version> <exclusions> <exclusion> <groupId>org.antlr</groupId> <artifactId>antlr</artifactId> </exclusion> <exclusion> <groupId>org.antlr</groupId> <artifactId>antlr-runtime</artifactId> </exclusion> <exclusion> <groupId>antlr</groupId> <artifactId>antlr</artifactId> </exclusion> <exclusion> <groupId>antlr</groupId> <artifactId>antlr-runtime</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.0.1.Final</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>antlr</groupId> <artifactId>antlr</artifactId> </exclusion> </exclusions> </dependency>
Expected way to build dependency list:
File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
.importRuntimeAndTestDependencies()
.resolve().withTransitivity().asFile();
However, this results in antlr still being added to the dependency list and the resulting WebArchive.
My temporary workaround is to explicitly exclude the G:A:
File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml") .importRuntimeAndTestDependencies() .resolve() .using( new RejectDependenciesStrategy(false, "org.antlr:antlr", "antlr:antlr") ) .withTransitivity().asFile();
Also note that the false is required in the RejectDependenciesStrategy. Without it, all (yes, all) transitive dependencies are ignored. This may be a separate issue but I want to mention it for anyone attempting this workaround.