0

我正在尝试扩展 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")
    }

那么,谁能告诉编译插件出了什么问题,或者如何在一次构建中两次使用任务?

4

1 回答 1

1

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

于 2013-07-25T10:20:30.200 回答