Skip to content

Gradle 6.0 resolves wildcarded maven dependencies differently than Gradle 5.X #10850

@aguibert

Description

@aguibert

Expected Behavior

I have a working project that has a dependency on a maven artifact produced by a peer component like this:

repositories {
   ivy {
       url "../cnf/local"
   }
}

configurations {
  ejbTools
}

dependencies {
  ejbTools 'test:com.ibm.ws.ejbcontainer.fat_tools:1.+'
}

The complete build.gradle file can be found here: https://github.com/OpenLiberty/open-liberty/blob/master/dev/com.ibm.ws.ejbcontainer.async_fat/build.gradle

Current Behavior

The dependency test:com.ibm.ws.ejbcontainer.fat_tools:1.+ fails to resolve with Gradle 6.0 with the following error:

> Task :com.ibm.ws.ejbcontainer.async_fat:addEJBTools FAILED

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/aguibert/dev/git/open-liberty/dev/com.ibm.ws.ejbcontainer.async_fat/build.gradle' line: 32

* What went wrong:
Execution failed for task ':com.ibm.ws.ejbcontainer.async_fat:addEJBTools'.
> Could not resolve all files for configuration ':com.ibm.ws.ejbcontainer.async_fat:ejbTools'.
   > Could not find any matches for test:com.ibm.ws.ejbcontainer.fat_tools:1.+ as no versions of test:com.ibm.ws.ejbcontainer.fat_tools are available.
     Searched in the following locations:
       - https://repo.maven.apache.org/maven2/test/com.ibm.ws.ejbcontainer.fat_tools/maven-metadata.xml
       - http://public.dhe.ibm.com/ibmdl/export/pub/software/olrepo/test/com.ibm.ws.ejbcontainer.fat_tools/maven-metadata.xml
       - file:/Users/aguibert/dev/git/open-liberty/dev/cnf/local/test/com.ibm.ws.ejbcontainer.fat_tools/
       - file:/Users/aguibert/dev/git/open-liberty/dev/cnf/local/test/com.ibm.ws.ejbcontainer.fat_tools/1.0.33.201909241016/ivy-1.0.33.201909241016.xml
     Required by:
         project :com.ibm.ws.ejbcontainer.async_fat

Context

Currently my project is using Gradle 5.5 and can be built with Java 8, 11, or 12. I am trying to get it working with Java 13 too so I am trying to upgrade to Gradle 6.0.

It seems that there is a general behavior change with the way wildcarded dependencies work in Gradle now (for example com.foo:bar:1.+). My configuration may have been invalid but tolerated in Gradle 5.X, so I'm willing to accept a pointer to a Gradle issue/pr/doc page that describes the behavior change and ideally the steps needed to get around this.

Steps to Reproduce

This will take a while, but you can do:

  1. clone my OpenLiberty repo: https://github.com/aguibert/open-liberty/tree/master
  2. Checkout the java13-gradle-bug-report branch
  3. Run ./gradlew releaseNeeded and it will eventually fail

Your Environment

$ ./gradlew --version

------------------------------------------------------------
Gradle 6.0-20190923093257+0000
------------------------------------------------------------

Build time:   2019-09-23 09:32:57 UTC
Revision:     5b1d0543e4b76fc51aafb5d2fc757dcf086b0e4c

Kotlin:       1.3.50
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM:          13 (Eclipse OpenJ9 openj9-0.16.0)
OS:           Mac OS X 10.14.6 x86_64

Metadata

Metadata

Assignees

No one assigned

    Labels

    a:bugThis doesn't work as expected

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions