[shrinkwrap-issues] [JBoss JIRA] (SHRINKWRAP-466) Maven dependency resolution ignores transitive exclusions
Ken H (JIRA)
jira-events at lists.jboss.org
Thu Oct 3 11:55:02 EDT 2013
[ https://issues.jboss.org/browse/SHRINKWRAP-466?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ken H updated SHRINKWRAP-466:
-----------------------------
Description:
In certain circumstances, it seems that the Maven resolver (in v2.0.0) is ignoring transitive exclusions.
Relevant pom.xml:
{code}
<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>
{code}
Expected way to build dependency list:
{code}
File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
.importRuntimeAndTestDependencies()
.resolve().withTransitivity().asFile();
{code}
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:
{code}
File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
.importRuntimeAndTestDependencies()
.resolve()
.using( new RejectDependenciesStrategy(false, "org.antlr:antlr", "antlr:antlr") )
.withTransitivity().asFile();
{code}
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.
was:
In certain circumstances, it seems that the Maven resolver is ignoring transitive exclusions.
Relevant pom.xml:
{code}
<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>
{code}
Expected way to build dependency list:
{code}
File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
.importRuntimeAndTestDependencies()
.resolve().withTransitivity().asFile();
{code}
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:
{code}
File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
.importRuntimeAndTestDependencies()
.resolve()
.using( new RejectDependenciesStrategy(false, "org.antlr:antlr", "antlr:antlr") )
.withTransitivity().asFile();
{code}
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.
> Maven dependency resolution ignores transitive exclusions
> ---------------------------------------------------------
>
> Key: SHRINKWRAP-466
> URL: https://issues.jboss.org/browse/SHRINKWRAP-466
> Project: ShrinkWrap
> Issue Type: Bug
> Reporter: Ken H
>
> In certain circumstances, it seems that the Maven resolver (in v2.0.0) is ignoring transitive exclusions.
> Relevant pom.xml:
> {code}
> <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>
> {code}
> Expected way to build dependency list:
> {code}
> File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
> .importRuntimeAndTestDependencies()
> .resolve().withTransitivity().asFile();
> {code}
> 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:
> {code}
> File[] dependencyFiles = Maven.resolver().loadPomFromFile("pom.xml")
> .importRuntimeAndTestDependencies()
> .resolve()
> .using( new RejectDependenciesStrategy(false, "org.antlr:antlr", "antlr:antlr") )
> .withTransitivity().asFile();
> {code}
> 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the shrinkwrap-issues
mailing list