0

gradle Android pluginの機能を拡張しようとしています。ポイントは、1 つのビルドで同じタスクを 2 回実行する必要があることです (実際には、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")
    }

それで、プラグインのコンパイルの何が間違っているのか、または1回のビルド中にタスクを2回使用する方法を誰かが教えてもらえますか?

4

1 に答える 1

1

同じビルドでタスクを 2 回実行することはできません。できることは、同じタイプと構成で 2 つのタスクを作成するか (複数のタスクを一度に構成できることに注意してください)、または (最後の手段として)GradleBuildビルド スクリプトを共有する 2 つの組み込みビルド (タスク タイプ) を起動することです。

于 2013-07-25T10:20:30.200 に答える