任务,子项目和配置之间的相关性

时间:2014-01-13 22:58:36

标签: gradle

我的项目有下一个结构:

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如何构建任务执行树,为每个项目或跨项目分开?

很多。

1 个答案:

答案 0 :(得分:2)

所有可以说(并且依赖)的是Gradle将选择满足声明的任务关系的任务顺序(dependsOnmustRunAftershouldRunAfter,{{1} })。所有执行依赖关系都在任务(而不是项目)之间,并且通常属于不同项目的任务将交替执行(或者如果使用finalizedBy则并行执行)。整个构建都有一个任务执行图。