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,多模块构建非常简单(递归子模块非常简单);对于格拉德来说,绝对不是。