Gradle 多项目任务执行行为
Gradle Multi-Project Task Execution Behaviour
我正在尝试使用 Eclipse 的 STS 插件构建 gradle 多项目。我以为我在阅读 tutorial 后掌握了基础知识,但我无法重现所示行为。添加时
allprojects {
task hello << {task -> println "I'm $task.project.name" }
}
subprojects {
hello << {println "- I GradleMaster"}
}
父项目的 到 build.gradle 我会假设任务 'hello' 正在为每个项目执行。对于子项目实际上是2次,但结果只有:
[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks:
[sts] :hello
[sts] -----------------------------------------------------
:hello
I'm GradleMaster
BUILD SUCCESSFUL
我的项目树大致是这样的:
Application/
GradleMaster/
build.gradle
settings.gradle
EAR/
build.gradle
EJB/
build.gradle
AppClient/
build.gradle
GradleMaster/settings.gradle:
include ':EAR', ':EJB', ':AppClient'
如您所见,父项目与子项目处于同一级别。我已经在更高级别的根项目中使用了另一种方式,但我没有注意到任何区别。
我还想知道 gradle 在所有项目共有的根项目上执行任务时的行为。例如,如果所有子项目都应用 'base' 插件,根项目上的 'clean' 不应该导致所有子项目也执行它们的 'clean' 版本吗?
在写问题时我没有想到它可能是 Eclipse STS 插件的问题而不是 Gradle 本身的问题。事实上,我什至没有提到我在 Eclipse 中使用 Gradle,这使得这个问题几乎无法回答。
原来是STS插件调用任务的方式。有任务和任务选择器。调用任务只执行项目中的任务,而调用任务选择器执行多构建项目中的所有同名任务。
Gradle 论坛中的 st_oehme's post 让我走上正轨。
我没有安装带有 Gradle STS 的 Eclipse,所以我无法准确告诉您调用任务选择器而不是单个任务必须执行的操作。也许其他人可以添加...
我正在尝试使用 Eclipse 的 STS 插件构建 gradle 多项目。我以为我在阅读 tutorial 后掌握了基础知识,但我无法重现所示行为。添加时
allprojects {
task hello << {task -> println "I'm $task.project.name" }
}
subprojects {
hello << {println "- I GradleMaster"}
}
父项目的 到 build.gradle 我会假设任务 'hello' 正在为每个项目执行。对于子项目实际上是2次,但结果只有:
[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks:
[sts] :hello
[sts] -----------------------------------------------------
:hello
I'm GradleMaster
BUILD SUCCESSFUL
我的项目树大致是这样的:
Application/
GradleMaster/
build.gradle
settings.gradle
EAR/
build.gradle
EJB/
build.gradle
AppClient/
build.gradle
GradleMaster/settings.gradle:
include ':EAR', ':EJB', ':AppClient'
如您所见,父项目与子项目处于同一级别。我已经在更高级别的根项目中使用了另一种方式,但我没有注意到任何区别。
我还想知道 gradle 在所有项目共有的根项目上执行任务时的行为。例如,如果所有子项目都应用 'base' 插件,根项目上的 'clean' 不应该导致所有子项目也执行它们的 'clean' 版本吗?
在写问题时我没有想到它可能是 Eclipse STS 插件的问题而不是 Gradle 本身的问题。事实上,我什至没有提到我在 Eclipse 中使用 Gradle,这使得这个问题几乎无法回答。
原来是STS插件调用任务的方式。有任务和任务选择器。调用任务只执行项目中的任务,而调用任务选择器执行多构建项目中的所有同名任务。
Gradle 论坛中的st_oehme's post 让我走上正轨。
我没有安装带有 Gradle STS 的 Eclipse,所以我无法准确告诉您调用任务选择器而不是单个任务必须执行的操作。也许其他人可以添加...