Gradle插件,在构建期间运行两次任务

时间:2013-07-25 09:56:52

标签: android plugins groovy gradle

我正在尝试扩展gradle Android plugin的功能。 关键是,我需要在一个构建上运行两次相同的任务(事实上整个任务链直到connectedInstrumentTest),并且由于我无法管理如何仅使用gradle来执行它,我决定编写自己的插件将成为现有Android插件的延伸。 所以,现在我正在尝试使用Android插件的功能,使用这样的groovy代码:

void apply(Project project) {

    project.plugins.apply(JavaPlugin.class)
    project.plugins.apply(AndroidPlugin.class)

    this.project = project
    this.logger = project.logger

    AndroidPlugin a = new AndroidPlugin()
    a.apply(project)

但是,尝试编译它,我收到一个错误:

导入com.jvoegele.gradle.plugins.android.AndroidPlugin

我正在使用这样的build.gradle来编译我的插件:

buildscript {
  repositories {
mavenCentral()
}
  dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}
apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}

另外,由于我第一次使用groovy,我在覆盖方法方面遇到了一些困难。我尝试了这个,但它似乎不起作用:

 MetaMethod proces = AndroidPackageTask.metaClass.pickMethod("process")
    proces = {
       println("ggggggg")
    }

那么,任何人都可以告诉编译插件有什么问题,或者在一次构建期间如何使用两次任务?

1 个答案:

答案 0 :(得分:1)

在同一版本中无法运行任务两次。您可以做的是创建具有相同类型和配置的两个任务(请注意,可以一次配置多个任务),或者(作为最后的手段)启动共享的两个嵌入式构建(任务类型GradleBuild)构建脚本。