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

Gradle将多模块项目中的嵌套子项目添加为另一个子项目的依赖项,gradle,dependency-management,multiple-projects,Gradle,Dependency Management,Multiple Projects,我有一个复杂但有趣的情况。这是我的文件夹结构的树形图: root |___ settings.gradle |___ p1 |___ p2 // depends on p3/sp1 |___ p3 |____|___sp1 |____|___sp2 我希望这能解释这种情况 现在,我如何将sp1添加为p2的依赖项 到目前为止,在我的root设置.gradle中,我有 rootProject.name = root include 'p1' include 'p2' include 'p3'

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

root
|___ settings.gradle
|___ p1
|___ p2  // depends on p3/sp1
|___ p3
|____|___sp1
|____|___sp2
我希望这能解释这种情况

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

到目前为止,在我的root
设置.gradle
中,我有

rootProject.name = root
include 'p1'
include 'p2'
include 'p3'
p2
build.gradle中,我有:

dependencies {
    compile project (':p3:sp1')
}
但是这样做仍然不能解决
p2
中的依赖关系;我仍然会遇到关于缺少定义的错误

我该如何解决这个问题


顺便提一下,我如何解决
sp1
可能具有的其他依赖关系。就像它依赖于
sp2
,即使它已经在
p3
中解决了,我是否需要以某种方式声明它?

假设项目
sp1
sp2
是项目
p3
子项目,如果您想这样做:

dependencies {
    compile project(':p3:sp1')
}
然后,您需要将
设置更改为:

rootProject.name = root

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

只需为那些可能正在查看的人添加答案,在您的设置中。gradle您将拥有

include ':p1',':p2',':p3:sp1',':p3:sp2'
如果sp1依赖于sp2

然后在sp1的gradle上添加依赖项,如下所示

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

你好你解决这个问题了吗?例如,我发现类似的解决方案problem@iamthevoid我认为公认的答案应该是可行的。你试过了吗?是的,我也试过了。顺便问一下,我有个问题。默认情况下,我的子模块的模块使用父项目的settings.gradle、build.gradle,但不使用子模型根项目的相同文件。有没有办法强制使用子模型根项目的build.gradle和settings gradle?@iamthevoid gradle不支持在一个gradle项目中有多个
设置。gradle
(不考虑子项目)。你可以用项目来完成这项工作,但Gradle没有更恰当地记录这一点,真是太遗憾了。我发现教程有误导性,官方文件缺少一些重要信息。使用Maven,多模块构建非常简单(递归子模块非常简单);对于格拉德来说,绝对不是。