Uploaded image for project: 'ShrinkWrap Resolvers'
  1. ShrinkWrap Resolvers
  2. SHRINKRES-152

Maven dependency resolution ignores transitive exclusions

    XMLWordPrintable

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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            steeltomato Ken H (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: