java - Gradle 传递依赖解析到 alpha 版本?

标签 java maven gradle build dependencies

在我的一个项目中,我正在使用 Spring Boot 1.5.2.RELEASE 等。 从今天开始,构建过程显示了一些警告消息,经过深入研究,我发现 Gradle 正在检索版本 1.8.0-alpha0 中的包 org.slf4j:slf4j-api

运行 dependencies 任务以深入了解已解决的依赖关系,我发现很多类似的行:

|    |    +--- org.springframework.boot:spring-boot-starter-logging:1.5.2.RELEASE
|    |    |    +--- ch.qos.logback:logback-classic:1.1.11
|    |    |    |    +--- ch.qos.logback:logback-core:1.1.11
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.22 -> 1.8.0-alpha0
|    |    |    +--- org.slf4j:jcl-over-slf4j:1.7.24
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.24 -> 1.8.0-alpha0
|    |    |    +--- org.slf4j:jul-to-slf4j:1.7.24
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.24 -> 1.8.0-alpha0
|    |    |    \--- org.slf4j:log4j-over-slf4j:1.7.24
|    |    |         \--- org.slf4j:slf4j-api:1.7.24 -> 1.8.0-alpha0

检查 Maven Central 1.8.0-alpha0 版本似乎是其他“正常”稳定版本之一,并已于 4 月 7 日添加。

我认为这里的罪魁祸首是 Maven Central 上 org.slf4j:slf4j-api 这个特定版本的包定义是否正确?

同时,我设法使用 Gradle 的解析策略强制依赖 1.7.25

最佳答案

正如 sm4 所提到的,问题来自一个项目依赖项,它本身依赖于 slf4j 的形式:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>[1.7.12,)</version>
</dependency>

开放式依赖 [1.7.12,) 在 Maven Central 中被解析为最新版本,即 1.8.0-alpha0

我们想知道在 Maven Central 上发布 alpha 版本是否正常,但 slf4j 似乎在以前的版本上这样做了,而像 Spring 这样的其他供应商使用其他存储库来制作 Snapshot里程碑 版本。

在我的例子中,我可以修复从 [1.7.12,)1.7.12 的依赖关系,因为它是我们内部 Maven 存储库中的一个内部包,但是如果像 isabsent 你依赖具有这些开放依赖项的外部包(如 easystream ),你将需要在你的 build.gradle 文件中强制版本:

configurations.all {
    resolutionStrategy {
        force 'org.slf4j:slf4j-api:1.7.25'
    }
}

关于java - Gradle 传递依赖解析到 alpha 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314152/

相关文章:

java - 在 Spring Boot 应用程序中加载不同的应用程序上下文

Java Jackson 解析动态 JSON 对象

java - Flink Quickstart 中 Eclipse IDE 中缺少依赖项

java - Android 构建返回 "java.lang.NoClassDefFoundError: com/android/tools/lint/LintCliClient"

android - gradle 如何处理具有不同支持库 v4 修订版的多模块?

java - 多对多 - 仅在连接表和一张表中保存/更新

Java Applet 使用 Paint 方法时遇到的问题

java - 为什么我的intellij idea maven项目没有src目录?

java - 获取maven项目的所有依赖

android - ConnectionResult=SERVICE_MISSING 用于 android Kitkat 真实设备中的 google play 服务