如何在另一个之前执行Gradle插件任务?

时间:2014-06-05 22:31:56

标签: gradle dependencies task build.gradle

我正在使用native-artifacts插件,该插件定义了许多任务,这些任务提取了在别处构建(并存储在Nexus / Maven中)的依赖项的Nar依赖项。我需要确保在构建二进制文件之前调用这些任务,否则找不到这些Nars包含的头文件。

我的问题是,如何将系统/插件定义的任务定义为我的某个任务的依赖项?

我喜欢这样的事情:

binaries.all {binary ->
      dependencies {
        // this next line is now the same as the plugin-defined task I want to have called before
        // before the build takes place
        compile "extractNarDeps${binary.name.capitalize()}"
      }
    }

可悲的是,这并没有建立起来。我怎么能实现这个目标呢?我有一个名为unitTests的组件,它是一个C ++组件,用于创建unitTestsExecutable。我想在调用compileUnitTests之前调用extractNarDepsxxx。

2 个答案:

答案 0 :(得分:0)

首先,你有任何名为binaries的名单吗?如果是,那么您可以在build.gradle文件中尝试类似下面的内容,因为依赖项将在您定义的任务之前执行:

dependencies {
    binaries.each {binary ->
        // this next line is now the same as the plugin-defined task I want to have called before
        // before the build takes place
        compile "extractNarDeps${binary.name.capitalize()}"
    }
}

// Your defined task here

答案 1 :(得分:0)

我这样做的方法是将我的任务指定为插件相关任务的依赖关系。缺少的语法链接是使用" tasks"作为参考项目中任务的一种手段。

答案不是我的,这里有很好的解释:tasks._applied_plugin_task_name_here.dependsOn(myTask)