3

ビルドを簡素化するために、「build.gradle」からカスタム プラグインを抽出し、それらを個別の gradle ファイルに入れたいと考えています。

これが私が思いつく最も簡単な例です。


1. build.gradle 内でプラグインを定義する (WORKS)

次の「build.gradle」:

apply plugin: GreetingPlugin

class GreetingPlugin implements Plugin<Project> {

    void apply(Project project) {

        project.task('hello') << {
            println "Hello, World"
        }
    }
}

実行すると:

gradle hello

プロデュース:

:hello
Hello, World

BUILD SUCCESSFUL


2. build.gradle からプラグインを抽出する (機能しない)

プラグイン定義を別のファイル「hello.gradle」に移動したい:

class GreetingPlugin implements Plugin<Project> {

    void apply(Project project) {

        project.task('hello') << {
            println "Hello, World"
        }
    }
}

「build.gradle」を次のように変更します。

apply from: 'hello.gradle'
apply plugin: GreetingPlugin

今私が実行すると:

gradle hello

以下を生成します。

FAILURE: Build failed with an exception.

* Where:
Build file 'build.gradle' line: 2

* What went wrong:
A problem occurred evaluating root project 'gradle-problem'.
> Could not find property 'GreetingPlugin' on root project 'gradle-problem'.

BUILD FAILED

Total time: 1.723 secs

私はこれが可能でなければならないと確信しています。

4

1 に答える 1

2

私は2つの合理的な解決策を見つけました:

1. 外部ファイル内にプラグインを適用する

こんにちは.gradle:

プラグインを適用: GreetingPlugin

クラス GreetingPlugin は Plugin<Project> を実装します {

    void apply(プロジェクト プロジェクト) {

        project.task('hello').doLast {
            println "ハロー、ワールド"
        }
    }
}

build.gradle:

apply from: 'hello.gradle'


2. プラグイン クラスをextプロパティに追加してエクスポートします。

こんにちは.gradle:

クラス GreetingPlugin は Plugin<Project> を実装します {

    void apply(プロジェクト プロジェクト) {

        project.task('hello').doLast {
            println "ハロー、ワールド"
        }
    }
}

ext.GreetingPlugin = GreetingPlugin

build.gradle:

apply from: 'hello.gradle'
apply plugin: GreetingPlugin
于 2013-10-29T19:24:56.127 に答える