android - Gradle插件,在构建过程中两次运行任务

标签 android plugins groovy gradle

我正在尝试扩展gradle Android plugin的功能。
关键是,我需要在一个构建中运行两次相同的任务(实际上,整个任务链直到connectedInstrumentTest),并且由于我无法仅使用gradle来管理该任务,因此我决定编写自己的插件将扩展到现有的Android插件。
因此,现在我正尝试使用此类常规代码在Android插件中使用功能:

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 - Gradle插件,在构建过程中两次运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17854754/

相关文章:

android - 滑动时 ViewPager 更新 fragment

python - Vim 插件并不总是加载?

date - Groovy日期代码产生意外的输出

android - 我想在使用 SAX 解析器解析 XML 后生成地理点

android - Activity 终止后,BroadcastReceiver 不再被触发

android - Kotlin : How to insert a value of a variable in a name of another variable

com - 如何在插件体系结构中进行免注册的COM

android - 用于移动应用程序测试的 Selenium 插件或用于移动应用程序测试的任何其他更好和合适的工具

Grails 字符串枚举?

Android Studio 不显示构建变体