【问题标题】:Add Task dependency to existing Plugin Task in Gradle?将任务依赖项添加到 Gradle 中的现有插件任务?
【发布时间】:2015-07-08 02:02:23
【问题描述】:

我在我的 build.gradle 文件中包含了第二个 gradle 文件 my.gradle

my.gradle的内容是:

应用插件:MyPlugin

class MyPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
       project.tasks.create(name: "myTask", type: MyTaskClass) {
       }
    }
}

在我的build.gradle我设置在顶部:

apply from: 'myPlugin.gradle'

现在我想在build.gradle 中设置一个任务依赖:

tasks.myPlugin.myTask.dependsOn += someOtherTask

构建时出现以下错误:

> Could not find property 'myPlugin' on task set.

如何在build.gradle 中从myPlugin 访问myTask

编辑:我试图确保 someTask 在 myTask 之后运行。我试图这样做:

taskX.finalizedBy taskY

就我而言:

tasks.myPlugin.myTask.finalizedBy someOtherTask

但前者不起作用。

【问题讨论】:

  • 那是伪代码吗?你真正想做什么?
  • 是的,这在Gradle 中很容易做到,你有正确的语法。问题是什么?您有要显示的build.gradle 文件吗?
  • 您似乎在反向使用dependsOn。如果 A 应该在 B 之前运行,在任务 B 定义中你应该说任务 B - 依赖 A 参见:gradle.org/docs/current/userguide/…

标签: java android groovy gradle


【解决方案1】:

以下脚本将完成这项工作:

my.gradle

apply plugin: MyPlugin

class MyPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
       project.tasks.create(name: "myTask", type: Copy) {
       }
    }
}

build.gradle

apply from: 'my.gradle'

task someOtherTask << {
   println 'doLast'
}

project.tasks.myTask.dependsOn(someOtherTask)

【讨论】:

  • 我有与上述类似的要求,但不同的是要确保我创建的任务取决于插件中定义的任务,知道如何做到这一点吗?跨度>
  • @MiguelCosta 我不太明白你的情况。
  • 没关系,你的例子很完美我只是用大写而不是小写来调用我的任务,它没有找到它。但与此基本相同,但我想确保我的任务仅在执行来自插件的任务后执行
【解决方案2】:

如果您正确地包含您的插件,您应该会看到您的任务。例如,如果您包含 java 插件并运行

gradle 任务 --all

您应该会看到 compileJava 包含在内。你的也一样,运行gradle tasks --all。您应该可以将其引用为 tasks.myTask 或 tasks['myTask']

【讨论】:

    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 2015-10-12
    • 2018-03-02
    • 2020-11-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多