我正在尝试扩展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/