Gradle 不包含可选依赖

Posted

技术标签:

【中文标题】Gradle 不包含可选依赖【英文标题】:Gradle Does Not Include Optional Dependency 【发布时间】:2014-11-30 22:08:47 【问题描述】:

我有一个项目,它具有 apache-compress 库作为编译时依赖项。这个库似乎使用 Maven,并且有一个 POM 文件,其依赖项设置为“可选”。以下是 POM 文件的相关部分:

<dependency>
  <groupId>org.tukaani</groupId>
  <artifactId>xz</artifactId>
  <version>1.5</version>
  <optional>true</optional>
</dependency>

Gradle 似乎没有将此库包含在我的项目中,我猜这是因为“可选”属性。有什么方法可以告诉 Gradle 包含此依赖项,而无需自己明确包含 xz 库?

这是我的 Gradle 依赖声明:compile group: 'org.apache.commons', name:'commons-compress', version:'1.8.1'

【问题讨论】:

对 Ivy 使用相同的依赖项似乎 Ivy 默认包含可选依赖项,或者可能只是完全忽略该设置。 【参考方案1】:

传递依赖解析不考虑可选依赖,如果需要,必须显式添加。 (在 Maven 中也是如此。)

【讨论】:

感谢您的明确答复。有没有办法告诉 gradle 包含在 commons-compress POM 中定义的 xz 库的版本,而不是显式定义某个版本? 不,没有(虽然我可以看到这很有用)。

以上是关于Gradle 不包含可选依赖的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 如何检测可选命令?

Gradle 如何检测可选命令?

Maven 可选的依赖和依赖排除

Gradle 无法与“无法找到可选库”同步

通过 Grab 添加的外部库的可选依赖项不可用

Java 接口中的可选方法