Gradle 将多模块项目中的嵌套子项目添加为另一个子项目的依赖项

Gradle add nested subproject from a multi-module project as dependency of another subproject

我有一个复杂但有趣的情况。这是我的文件夹结构的树状图:

root
|___ settings.gradle
|___ p1
|___ p2  // depends on p3/sp1
|___ p3
|____|___sp1
|____|___sp2

我希望能说明情况。

现在如何将 sp1 添加为 p2 的依赖项?

到目前为止,在我的根 setting.gradle 中,我有

rootProject.name = root
include 'p1'
include 'p2'
include 'p3'

p2build.gradle中,我有:

dependencies {
    compile project (':p3:sp1')
}

但是这样做仍然没有解决p2中的依赖关系;我仍然收到有关缺少定义的错误。

我该如何解决这个问题?

顺便说一句,我将如何解决 sp1 可能有的其他依赖项。就像它取决于 sp2,即使它已经在 p3 中解决,我是否需要以某种方式声明它?

假设项目 sp1sp2 是项目 p3subprojects,如果您想这样做:

dependencies {
    compile project(':p3:sp1')
}

然后您需要将 settings.gradle 更改为:

rootProject.name = root

include ':p1'
include ':p2'
include ':p3'    // Keep this if this folder contains a build.gradle
include ':p3:sp1'
include ':p3:sp2'

只是为那些可能正在寻找的人添加答案,在您的 settings.gradle 中您将拥有

include ':p1',':p2',':p3:sp1',':p3:sp2'

如果 sp1 依赖于 sp2

然后添加对 sp1 的 gradle 的依赖,如

dependency {
   compile project(":p3:sp2")
}