gradle - 为什么包含特定的 jar 文件?

标签 gradle

我有一个使用 gradle 和 mavenCentral() (加上 mavenLocal())的项目。它有足够的依赖项,我无法一一浏览它们。

给定 build/install/x/lib 中 .jar 文件的名称,如何找出导致包含该文件的传递依赖关系链?

更新:我发现了gradle依赖项。输出显示:

org.apache.commons:commons-jexl:2.1.1
   \---- commons-logging:commons-logging:1.1.1 -> 1.1.3

这是什么意思? 1.1.1 是我期望的版本,1.1.3 是我似乎最终实际使用的版本。正在查看the pom for commons-jexl看起来它确实列出了logging:1.1.1作为要求。这是怎么回事?有没有办法让我告诉它避免某些版本,或者强制它使用它设置的版本?

我的情况的问题是它包含 -SNAPSHOT 版本,但我宁愿不包含。事实上,我可能希望它只使用我要求的版本号,而不是它能找到的最新版本号。

最佳答案

gradle 管理的项目的依赖项有自己的依赖项(它们称为传递)。可能会发生(并且经常发生)两个不同的依赖项具有相同的(组和模块)依赖项,但版本不同)。 commons-logging:commons-logging 就是这种情况。在这种情况下,有两个传递依赖项,第一个版本为 1.1.1,第二个版本为 1.1.3。如果这两个库都包含在最终工件中,则可能会导致冲突和异常。为了防止这种情况,gradle 尝试通过选择(默认)最新版本来解决提到的版本解析问题。它用右箭头 -> 表示,请参阅 here 。您可以从特定依赖项中排除传递依赖项。 This手册的章节可能有用。

关于gradle - 为什么包含特定的 jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31953570/

相关文章:

android - 能够更改通过Gradle(Android Studio)导入的库的代码吗?

android-studio - 应用程序无法构建并出现错误无法找到可选库

build - 运行并行任务

java - 将 stderr 重定向到 stdout 时,gradle 的输出出现乱码。 Jenkins gradle 插件受到影响

java - Eclipse 和 Gradle 类路径导致启动缓慢

android - 更新到 buildTools 27.0.3 后 Gradle 失败

gradle - 如何排除模块 cxf-rt-transports-http

java - 学习spring之前应该先了解一下Gradle和Maven?

java - gradle包装器如何使用它的构建文件来保存安装gradle的表单?

android - Gradle Build运行时间过长