quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.44k stars 2.58k forks source link

Gradle: cannot override the version of a dependency defined in the BOM #41160

Open cthiebault opened 1 month ago

cthiebault commented 1 month ago

Describe the bug

I'm using Quarkus 3.11.1 with Gradle 8.8, and I would like to override the version of Keycloak for my application. We have Keycloak 24 deployed and Quarkus 3.11.1 supports only Keycloak 23.0.7.

I tried in my build.gradle.kts:

  dependencies {
    implementation(platform("io.quarkus.platform:quarkus-bom:3.11.1"))
    implementation("io.quarkus:quarkus-keycloak-admin-client")

    // override the version of Keycloak
    implementation("org.keycloak:keycloak-admin-client") { version { strictly("24.0.4") } }
  }

But I get the following error:

./gradlew build
> Task :quarkusGenerateCode FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':quarkusGenerateCode'.
> Could not resolve all files for configuration ':quarkusProdBaseRuntimeClasspathConfiguration'.
   > Could not resolve org.keycloak:keycloak-admin-client:{strictly 24.0.4}.
     Required by:
         project :
      > Cannot find a version of 'org.keycloak:keycloak-admin-client' that satisfies the version constraints:
           Dependency path 'com.example:my-app:1.0.0-SNAPSHOT' --> 'org.keycloak:keycloak-admin-client:{strictly 24.0.4}'
           Constraint path 'com.example:my-app:1.0.0-SNAPSHOT' --> 'io.quarkus.platform:quarkus-bom:3.11.1' (platform-runtime) --> 'org.keycloak:keycloak-admin-client:23.0.7'
           Constraint path 'com.example:my-app:1.0.0-SNAPSHOT' --> 'io.quarkus:quarkus-keycloak-admin-client:3.11.1' (runtime) --> 'io.quarkus:quarkus-keycloak-admin-resteasy-client:3.11.1' (runtime) --> 'org.keycloak:keycloak-admin-client:23.0.7'

Expected behavior

No response

Actual behavior

No response

How to Reproduce?

No response

Output of uname -a or ver

No response

Output of java -version

21.0.2

Quarkus version or git rev

3.11.1

Build tool (ie. output of mvnw --version or gradlew --version)

Gradle 8.8

Additional information

No response

quarkus-bot[bot] commented 1 month ago

/cc @geoand (kotlin), @glefloch, @quarkusio/devtools

mschorsch commented 1 month ago

@cthiebault Without having tested it, can you try restricting the version via a dependency constraint? This should tell Gradle to resolve org.keycloak:keycloak-admin-client:24.0.4.

Something like this:

dependencies {
    implementation(platform("io.quarkus.platform:quarkus-bom:3.11.1"))
    implementation("io.quarkus:quarkus-keycloak-admin-client")
    constraints {
        implementation("org.keycloak:keycloak-admin-client:24.0.4") {
            because("i need a newer version :)")
        }
    }
}