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

Android Gradle插件,在构建期间运行两次任务,android,plugins,groovy,gradle,Android,Plugins,Groovy,Gradle,我正在尝试扩展gradle的功能。 关键是,我需要在一个构建中运行两次相同的任务(事实上,在connectedInstrumentTest之前的整个任务链),并且由于我无法管理如何仅使用gradle来完成,所以我决定编写自己的插件,作为现有安卓插件的扩展。 所以,现在我尝试在我的应用程序中使用Android插件的功能,使用这样的groovy代码: void apply(Project project) { project.plugins.apply(JavaPlugin.class)

我正在尝试扩展gradle的功能。 关键是,我需要在一个构建中运行两次相同的任务(事实上,在connectedInstrumentTest之前的整个任务链),并且由于我无法管理如何仅使用gradle来完成,所以我决定编写自己的插件,作为现有安卓插件的扩展。 所以,现在我尝试在我的应用程序中使用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")
    }

那么,有人能告诉我们编译插件的错误是什么,或者如何在一个版本中使用两次任务吗?

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

会出现什么错误?这是一个导入语句我有一个错误,因为缺少Android插件,比如:import com.jvoegele.gradle.plugins.Android.AndroidPlugin我想,我的build.gradle有点问题,但我不知道“相同类型和配置的任务”是什么意思?你能举个简单的例子吗?用相同的
destinationDir
声明五个
Copy
任务:
5.times{task“task$it”(type:Copy){destinationDir=file(“some/dir”)}
是的,谢谢,这对这个任务很好,但是我不能用插件来完成任务,比如:
android{..}
,我怎样才能再次使用它们?没有通用的方法可以做到这一点。您可能需要编写专门的代码来复制必要的任务。或者对你的整个方法提出质疑。在Peter出色的回答之上,你的代码和错误很奇怪。您正在引用官方的gradle插件,但试图使用来自第三方android插件(com.jvoegele.gradle.plugins.android.AndroidPlugin)的任务。我不知道你想做什么,但这两个插件可能彼此不兼容。