【问题标题】:Correlation between tasks, sub-projects and configurations任务、子项目和配置之间的关联
【发布时间】:2014-01-16 10:46:56
【问题描述】:

我的项目有下一个结构:

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 任务,而不是 B 的所有 java 任务......?

可选问题 Gradle 如何构建任务执行树,为每个项目或跨项目分开?

非常感谢。

【问题讨论】:

    标签: gradle


    【解决方案1】:

    所有可以说(和依赖)的是 Gradle 将选择一个满足声明的任务关系(dependsOnmustRunAftershouldRunAfterfinalizedBy)的任务顺序。所有执行依赖都在任务之间(不是项目),属于不同项目的任务通常会交替执行(如果使用--parallel,则并行执行)。整个构建只有一个任务执行图。

    【讨论】:

    • 谢谢回答。很有意思。但是我找不到任何示例如何设置跨项目任务依赖项?我发现例如 Java 插件使用对 SourceSet 的依赖,但它仍然与同一个项目相关。
    • 通常,Gradle 会自动推断这些任务依赖关系,例如从项目(工件)依赖关系。否则,您可以使用foo.dependsOn ":A:myPluginTask"
    • 如果我的插件有一个任务 X project A(X -> javaCompile -> classes -...> build)project B (compile project dependency on A) (same tasks list) Gradle 需要什么信息来推断正确的任务执行图?
    • 我没有足够的信息来回答这个问题。你想解决哪个问题?也许是时候提出一个新问题了。
    • 你是对的,我试图了解解决我问题的一般机制,但是没有运气,所以这里是我的详细问题(thx):stackoverflow.com/questions/21268220/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    相关资源
    最近更新 更多