【发布时间】:2017-07-05 10:51:32
【问题描述】:
考虑以下 Gradle 项目结构:
- root
|- build.gradle
|- barProject
|- build.gradle
|- fooProject
|- build.gradle
根 build.gradle 配置其子项目的位置如下:
subprojects {
apply plugin: 'java'
//bunch of other stuff
}
现在,当我在根项目上调用 gradlew build 时,它会自动配置两个子项目,然后构建它们 - 一切都很好。
我也知道我可以通过各种方式(onlyIf()、[taskName].enabled = false 等)跳过特定任务,但是当我使用 build 上的任何一个时,Gradle 仍然运行所有相关任务(compileJava 、processResources、classes 等),直到最后点击build,然后跳过。
我的问题是,有没有任何方法让 Gradle 在配置阶段之后立即停止并转到下一个子项目?
编辑:
澄清;每个子项目都有一个名为skip 的属性,该属性在配置阶段进行评估。
现在,当我在根项目上调用 gradlew build 时,理想情况下,我希望 Gradle 检查该属性,如果为真,则完全跳过相应的项目。
Executing external task 'build'...
//check project.skip -> IF true -> skip project, go to :foo ELSE continue
:bar:compileJava
:bar:processResources UP-TO-DATE
:bar:classes
:bar:jar
:bar:startScripts
:bar:distTar
:bar:distZip
:bar:assemble
:bar:compileTestJava UP-TO-DATE
:bar:processTestResources UP-TO-DATE
:bar:testClasses UP-TO-DATE
:bar:test UP-TO-DATE
:bar:check UP-TO-DATE
:bar:build
//check project.skip -> IF true -> skip project, go to end ELSE continue
:foo:compileJava
:foo:processResources UP-TO-DATE
:foo:classes
:foo:jar
:foo:startScripts
:foo:distTar
:foo:distZip
:foo:assemble
:foo:compileTestJava UP-TO-DATE
:foo:processTestResources UP-TO-DATE
:foo:testClasses UP-TO-DATE
:foo:test UP-TO-DATE
:foo:check UP-TO-DATE
:foo:build
BUILD SUCCESSFUL
我希望这更有意义
【问题讨论】:
-
你想达到什么目的?您只想构建根项目还是一个子项目?情况应该如何?
-
@lu.koerfer 我进行了编辑以澄清
标签: gradle build.gradle