Gradle 任务不在所有子项目中 运行
Gradle task don't run in all subprojects
我有以下多模块项目结构。
Root project 'reports-be'
+--- Project ':auth'
+--- Project ':builder'
| +--- Project ':builder:base'
| \--- Project ':builder:reporting'
\--- Project ':common'
当我为 /builder 子项目 运行 build
任务时,我希望 build
任务将为所有子项目执行(对于:builder:base
和 :builder:reporting
).
gradle clean :builder:build
但是 gradle 只为子项目 :builder
执行 build
任务。
根据 Gradle documentation build
应完成所有子项目的任务。
为什么没有发生?
P.S。我发现命令 gradle -p builder clean build
按预期工作。但是我真的不明白第一个提到的 gradle 任务有什么问题。
P.S.S.我在每个子项目中都有 build.gradle
,我的 settings.gradle
看起来像
rootProject.name = 'reports-be'
include 'common'
include 'builder'
include 'auth'
include 'builder:base'
include 'builder:reporting'
:builder:build
是项目:builder
中任务build
的限定任务名,所以只会执行这个任务(及其依赖项)。所有(子)项目中的执行仅适用于不合格的任务名称,如 build
。您可以切换到 builder
目录并从那里切换到 运行 gradle build
,但是如果您想要 运行 clean
中的所有项目,这种方法将不起作用相同的调用,使用包装器时有点丑陋(gradlew
)。据我所知,您的用例没有直接的解决方案。
如果我没听错,:builder
项目只是一个用于组织目的的虚拟项目,不包含任何实际源代码或任何其他要构建的内容。在这种情况下,您可以使用 builder/build.gradle
:
中的任务依赖关系来解决您的问题
task build {
dependsOn ':builder:base:build', ':builder:reporting:build'
}
我发现的三个可能的解决方案:
1。
gradle -p builder clean build
2:
cd ./builder
gradle clean build
3。为 builder/build.gradle 添加修改(适用于 Gradle 6.3):
build {
dependsOn ':builder:base:build', ':builder:reporting:build'
}
和 运行 gradle clean build
来自根项目目录。
感谢您提供此解决方案
我有以下多模块项目结构。
Root project 'reports-be'
+--- Project ':auth'
+--- Project ':builder'
| +--- Project ':builder:base'
| \--- Project ':builder:reporting'
\--- Project ':common'
当我为 /builder 子项目 运行 build
任务时,我希望 build
任务将为所有子项目执行(对于:builder:base
和 :builder:reporting
).
gradle clean :builder:build
但是 gradle 只为子项目 :builder
执行 build
任务。
根据 Gradle documentation build
应完成所有子项目的任务。
为什么没有发生?
P.S。我发现命令 gradle -p builder clean build
按预期工作。但是我真的不明白第一个提到的 gradle 任务有什么问题。
P.S.S.我在每个子项目中都有 build.gradle
,我的 settings.gradle
看起来像
rootProject.name = 'reports-be'
include 'common'
include 'builder'
include 'auth'
include 'builder:base'
include 'builder:reporting'
:builder:build
是项目:builder
中任务build
的限定任务名,所以只会执行这个任务(及其依赖项)。所有(子)项目中的执行仅适用于不合格的任务名称,如 build
。您可以切换到 builder
目录并从那里切换到 运行 gradle build
,但是如果您想要 运行 clean
中的所有项目,这种方法将不起作用相同的调用,使用包装器时有点丑陋(gradlew
)。据我所知,您的用例没有直接的解决方案。
如果我没听错,:builder
项目只是一个用于组织目的的虚拟项目,不包含任何实际源代码或任何其他要构建的内容。在这种情况下,您可以使用 builder/build.gradle
:
task build {
dependsOn ':builder:base:build', ':builder:reporting:build'
}
我发现的三个可能的解决方案:
1。
gradle -p builder clean build
2:
cd ./builder
gradle clean build
3。为 builder/build.gradle 添加修改(适用于 Gradle 6.3):
build {
dependsOn ':builder:base:build', ':builder:reporting:build'
}
和 运行 gradle clean build
来自根项目目录。
感谢您提供此解决方案