Gradle多项目传递依赖项

时间:2019-03-28 03:25:33

标签: java gradle gradle-dependencies

我有三个gradle项目。说ProjectAProjectBProjectC

ProjectC同时取决于ProjectAProjectBProjectB依赖于ProjectA

所以ProjectC的{​​{1}}有以下几行:

build.gradle

并且dependencies { implementation project(':ProjectA') implementation project(':ProjectB') } 的{​​{1}}具有以下内容:

ProjectB

我的问题是,为什么我需要在build.gradle的构建文件中为dependencies { implementation project(':ProjectA') } 进行明确的implementation声明?

自从我添加ProjectA以来,ProjectC依赖于ProjectB是不是应该自动包含ProjectA

换句话说,为什么以下内容不适用于ProjectB

ProjectA

我是ProjectC的新手,因此尝试了解Project工作之间的依赖关系管理。


编辑:

所以我想将dependencies { implementation project(':ProjectB') } 的build.gradle更改为以下内容:

gradle

这样我就可以将ProjectB的build.gradle简化为:

dependencies {
  api project(':ProjectA')
}

但是,出现以下错误:

ProjectC

我想念什么吗?

1 个答案:

答案 0 :(得分:0)

因为implementation正是出于此目的:它告诉ProjectA代码(内部)需要ProjectA才能起作用,但它不是其API的一部分(即,您不希望ProjectB的客户依赖它在内部使用ProjectA的事实)。

如果您希望ProjectA成为API或ProjectB的一部分,请使用api配置而不是实现。

有关更多详细信息,请参见the guide