在我的一个项目中,我正在使用 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/