gpt4 book ai didi

java - 为什么引入同级模块会改变 gradle 5 中该模块的依赖规则/顺序?

转载 作者:行者123 更新时间:2023-12-02 10:27:18 24 4
gpt4 key购买 nike

我有两个模块:

  • 基础库
  • 服务

base-lib 具有一些 Spring Boot/Security 依赖项以及一些 Azure 依赖项。 Azure 需要特定版本的 nimbusds,因此我将该依赖项设置为特定版本 (5.64.4)。当我自己构建第一个模块时,gradle 仅下载 5.64.4。但是,当我将其作为其他模块的项目依赖项(没有其他依赖项)时,它会下载两个版本:5.64.4 和 6.0。为什么会有所不同?

基础库:build.gradle

buildscript {

repositories {
mavenCentral()
mavenLocal()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

apply plugin: "java"
apply plugin: "java-library"
apply plugin: "org.springframework.boot"
apply plugin: "io.spring.dependency-management"

group "${group}"
version "${version}"

sourceCompatibility = 11.0

repositories {
mavenCentral()
mavenLocal()
}

dependencies {

api( [ "com.nimbusds:oauth2-oidc-sdk:5.64.4" ] )

/* These are what pulls in 6.0 */
api( [ "org.springframework.boot:spring-boot-starter-security:${springBootVersion}" ] )
api( [ "org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:${springBootVersion}" ] )
api( [ "org.springframework.security:spring-security-oauth2-client:${springOAuthClientVersion}" ] )

//Microsoft Azure AD
api( [ "com.microsoft.azure:adal4j:${adal4jVersion}" ] )

/* elided, lot's of other dependencies here */
}

服务 build.gradle

dependencies {
implementation project(":base-lib")
}

如果我删除第二个模块(service)并构建第一个模块,那么它只会下载 5.64.4。但当我同时拥有并构建它们时,它也会拉低 6.0。

这解决了这个问题,但是为什么在作为项目依赖项引入时需要这个,而不是通常情况下?为什么依赖规则不同?

api( [ "com.nimbusds:oauth2-oidc-sdk:5.64.4" ] ) {
force = true
}

最佳答案

解决此类问题的最佳方法是使用 the dependencyInsight task关于有问题的依赖。

就您而言,最可能的解释是您的项目 base-lib 使用了 Spring boot 和 Spring 依赖管理插件。这些插件将根据 Spring boot BOM 强制使用多个版本,但也有 feature这使得使用版本声明的任何依赖项都会覆盖来自 BOM 的依赖项。由于您指定了 oauth2-oidc-sdk 的版本,它确实获得了该版本。

现在,当您在 service 中传递所有这些依赖项时,不会应用依赖项管理插件。因此,默认的 Gradle 解析规则适用,这意味着在 5.64.46.0 版本之间,Gradle 将选择最高的。

可以通过强制使用您试验的版本或应用相同的插件并再次声明来完成修复。

关于java - 为什么引入同级模块会改变 gradle 5 中该模块的依赖规则/顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53856704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com