我具有以下多模块项目结构。
Root project 'reports-be'
+--- Project ':auth'
+--- Project ':builder'
| +--- Project ':builder:base'
| \--- Project ':builder:reporting'
\--- Project ':common'
当我为 / builder 子项目运行build
任务时,我希望所有子项目(对于build
和{{1 }}。
:builder:base
但是gradle仅对子项目:builder:reporting
执行gradle clean :builder:build
任务。
根据{{3}} build
,所有子项目的任务都应完成。
为什么不发生?
P.S。我发现命令:builder
可以正常工作。但是我真的不明白第一次提到的gradle任务有什么问题。
P.S.S。我在每个子项目中都有build
,而我的gradle -p builder clean build
看起来像
build.gradle
答案 0 :(得分:1)
:builder:build
是项目build
中任务:builder
的合格任务名称,因此仅将执行此任务(及其依赖项)。所有(子)项目中的执行仅对于不合格的任务名称为build
才可能执行。您可以切换到builder
目录并从那里运行gradle build
,但是,如果您想为同一调用中的所有项目运行clean
,则此方法将不起作用,这很丑陋使用包装器(gradlew
)时。据我所知,您的用例还没有直接的解决方案。
如果我说对了,:builder
项目只是出于组织目的的虚拟项目,它不包含任何实际资源或任何其他可构建的内容。在这种情况下,您可以使用builder/build.gradle
中的任务依赖项来解决问题:
task build {
dependsOn ':builder:base:build', ':builder:reporting:build'
}
答案 1 :(得分:0)
我发现了三种可能的解决方案:
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
。
感谢您的解决方案Lukas Korfer answer