是否可以在 gradle 中设置项目树,以便每个子树独立构建?
在示例目录(项目)结构中:
A
+ B1
+ C1
+ C2
+ B2
+ C4
+ C5
您应该能够自己构建 B1(将构建 C1 和 C2)以及 A(将构建所有 7 个项目)
问题一: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?
最佳答案
据我所知,您在根项目中只能有一个 settings.gradle,并且无法将分层项目分组到子组中。
虽然你可以在 settings.gradle 中有多个级别:
include "b1",
"b1:c1",
"b1:c2",
"b2",
"b2:c4",
"b2:c5"
如果您在根目录下执行 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
关于java - 具有相关配置的多级 Gradle 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29507216/