我的项目有下一个结构:
Root
|- A
|- C (depends on A)
\- B (depends on A)
对于所有子项目,我们使用自己的插件来生成资源:https://github.com/terma/gradle-sqlj-plugin/blob/master/src/main/groovy/org/github/terma/sqljgradleplugin/SqljPlugin.groovy插件中的任务不依赖于任何JavaCompile任务依赖于它
当我在构建日志中构建项目时,我看到:
:A:myPluginTask
:B:myPluginTask
:C:myPluginTask
:A:compileJava
:A:processResources
:A:classes
:B // next normal build way
问为什么Gradle在java任务之前为所有子项目执行我的插件任务?为什么它以正常方式执行java任务首先是A的所有Java任务而不是B ......?
可选问题Gradle如何构建任务执行树,为每个项目或跨项目分开?
很多。
答案 0 :(得分:2)
所有可以说(并且依赖)的是Gradle将选择满足声明的任务关系的任务顺序(dependsOn
,mustRunAfter
,shouldRunAfter
,{{1} })。所有执行依赖关系都在任务(而不是项目)之间,并且通常属于不同项目的任务将交替执行(或者如果使用finalizedBy
则并行执行)。整个构建都有一个任务执行图。