是否可以在gradle中设置项目树,以便每个子树独立构建?
在示例目录(项目)结构中:
A
+ B1
+ C1
+ C2
+ B2
+ C4
+ C5
您应该能够自己构建B1(将构建C1和C2)以及A(将构建所有7个项目)
问题1:A忽略B1配置
A / B1 / setting.gradle:
include "C1", "C2"
在A中,执行“gradle projects”命令将显示B1但不显示C1或C2。
问题2:相对依赖
如果C1依赖于C2,则指定此值的唯一方法是绝对路径。这意味着它适用于A或B1,但不适用于两者:
project(':B1:C2') // works for B1 but not for A
or
project(':A:B1:C2') // works for A but not for B1
这个目录结构是否可行,我可以单独构建A,B1和B2?
答案 0 :(得分:1)
AFAIK在根项目中只能有一个settings.gradle,并且没有办法将分层项目分组到子组中。
您可以在settings.gradle中使用多个级别:
include "b1",
"b1:c1",
"b1:c2",
"b2",
"b2:c4",
"b2:c5"
如果你在root中执行gradle,这将构建所有项目,但是如果你在b1中执行它,它将不会只构建b1,c1和c2。
我不确定你想在这里完成什么,但也许任务依赖可以解决你之后的问题:
B1 /的build.gradle:
tasks.jar.dependsOn += [
project(":b1:c1").tasks.jar,
project(":b1:c2").tasks.jar
]
运行jar任务:
$ gradle -p b1 jar
:b1:compileJava UP-TO-DATE
:b1:processResources UP-TO-DATE
:b1:classes UP-TO-DATE
:b1:c1:compileJava UP-TO-DATE
:b1:c1:processResources UP-TO-DATE
:b1:c1:classes UP-TO-DATE
:b1:c1:jar
:b1:c2:compileJava UP-TO-DATE
:b1:c2:processResources UP-TO-DATE
:b1:c2:classes UP-TO-DATE
:b1:c2:jar
:b1:jar
BUILD SUCCESSFUL
Total time: 0.761 secs