Gradle-plugins
Gradle-プラグイン
プラグインはタスクのセットに他なりません。タスクのコンパイル、ドメインオブジェクトの設定、ソースファイルのセットアップなど、ほとんどすべての有用なタスクはプラグインによって処理されます。 プラグインをプロジェクトに適用すると、プラグインがプロジェクトの機能を拡張できるようになります。 プラグインは次のようなことを行うことができます-
- 基本的なGradleモデルを拡張します(例: 設定可能な新しいDSL要素を追加します)。
- 変換に従ってプロジェクトを構成します(例: 新しいタスクを追加するか、適切なデフォルトを設定します)。
- 特定の構成を適用します(例: 組織のリポジトリを追加するか、標準を実施します)。
プラグインの種類
Gradleには、スクリプトプラグインとバイナリプラグインの2種類のプラグインがあります。 スクリプトプラグインは、ビルドを操作するための宣言型アプローチを提供する追加のビルドスクリプトです。 これは通常、ビルド内で使用されます。 バイナリプラグインは、プラグインインターフェイスを実装し、ビルドを操作するためのプログラム的なアプローチを採用するクラスです。 バイナリプラグインは、ビルドスクリプト、プロジェクト階層、またはプラグインJARの外部に常駐できます。
プラグインを適用する
- Project.apply()* APIメソッドは、特定のプラグインを適用するために使用されます。 同じプラグインを複数回使用できます。 プラグインには、スクリプトプラグインとバイナリプラグインの2種類があります。
スクリプトプラグイン
スクリプトプラグインは、ローカルファイルシステムまたはリモートの場所にあるスクリプトから適用できます。 ファイルシステムの場所はプロジェクトディレクトリに関連していますが、リモートスクリプトの場所はHTTP URLを指定します。 次のコードスニペットをご覧ください。 これは、 other.gradle プラグインをビルドスクリプトに適用するために使用されます。 build.gradle ファイルでこのコードを使用します。
apply from: 'other.gradle'
バイナリプラグイン
一部のコアプラグインは短い名前を使用して適用し、一部のコミュニティプラグインはプラグインIDに完全修飾名を使用しているため、各プラグインはプラグインIDによって識別されます。 プラグインのクラスを指定することができます。
次のコードスニペットをご覧ください。 タイプを使用してjavaプラグインを適用する方法を示します。 build.gradle ファイルでこのコードを使用します。
apply plugin: JavaPlugin
短い名前を使用してコアプラグインを適用するための次のコードをご覧ください。 build.gradle ファイルでこのコードを使用します。
plugins {
id 'java'
}
ショートネームを使用してコミュニティプラグインを適用するための次のコードをご覧ください。 build.gradle ファイルでこのコードを使用します。
plugins {
id "com.jfrog.bintray" version "0.4.1"
}
カスタムプラグインの作成
カスタムプラグインの作成中に、プラグインの実装を記述する必要があります。 Gradleはプラグインをインスタンス化し、Plugin.apply()メソッドを使用してプラグインインスタンスを呼び出します。 次のサンプルには、プロジェクトにhelloタスクを追加するグリーティングプラグインが含まれています。 次のコードを見てください。 build.gradle ファイルでこのコードを使用します。
apply plugin: GreetingPlugin
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') << {
println "Hello from the GreetingPlugin"
}
}
}
次のコードを使用して、上記のスクリプトを実行します。
C:\> gradle -q hello
出力:
Hello from the GreetingPlugin
ビルドから入力を取得する
ほとんどのプラグインには、ビルドスクリプトからの構成サポートが必要です。 Gradleプロジェクトには、プラグインに渡されるすべての設定とプロパティを追跡するのに役立つExtensionContainerオブジェクトが関連付けられています。
プロジェクトに単純な拡張オブジェクトを追加しましょう。 ここで、プロジェクトにグリーティング拡張オブジェクトを追加します。これにより、グリーティングを設定できます。 build.gradle ファイルでこのコードを使用します。
apply plugin: GreetingPlugin
greeting.message = 'Hi from Gradle'
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
//Add the 'greeting' extension object
project.extensions.create("greeting", GreetingPluginExtension)
//Add a task that uses the configuration
project.task('hello') << {
println project.greeting.message
}
}
}
class GreetingPluginExtension {
def String message = 'Hello from GreetingPlugin'
}
次のコードを使用して、上記のスクリプトを実行します。
C:\> gradle -q hello
出力:
Hi from Gradle
この例では、GreetingPluginは、messageというフィールドを持つ単純な古いGroovyオブジェクトです。 拡張オブジェクトは、グリーティングという名前でプラグインリストに追加されます。 このオブジェクトは、拡張オブジェクトと同じ名前のプロジェクトプロパティとして使用可能になります。
Gradleは各拡張オブジェクトに構成クロージャーを追加するため、設定をグループ化できます。 次のコードを見てください。 build.gradle ファイルでこのコードを使用します。
apply plugin: GreetingPlugin
greeting {
message = 'Hi'
greeter = 'Gradle'
}
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create("greeting", GreetingPluginExtension)
project.task('hello') << {
println "${project.greeting.message} from ${project.greeting.greeter}"
}
}
}
class GreetingPluginExtension {
String message
String greeter
}
次のコードを使用して、上記のスクリプトを実行します。
C:\> gradle -q hello
出力:
Hello from Gradle
標準Gradleプラグイン
Gradleディストリビューションに含まれるさまざまなプラグインがあります。
言語プラグイン
これらのプラグインは、JVMでコンパイルおよび実行できるさまざまな言語のサポートを追加します。
Plugin Id | Automatically Applies | Description |
---|---|---|
java | java-base | Adds Java compilation, testing, and bundling capabilities to a project. It serves as the basis for many of the other Gradle plugins. |
groovy | java,groovy-base | Adds support for building Groovy projects. |
scala | java,scala-base | Adds support for building Scala projects. |
antlr | Java | Adds support for generating parsers using Antlr. |
言語プラグインのインキュベーション
これらのプラグインは、さまざまな言語のサポートを追加します。
Plugin Id | Automatically Applies | Description |
---|---|---|
assembler | - | Adds native assembly language capabilities to a project. |
c | - | Adds C source compilation capabilities to a project. |
cpp | - | Adds C++ source compilation capabilities to a project. |
objective-c | - | Adds Objective-C source compilation capabilities to a project. |
objective-cpp | - | Adds Objective-C++ source compilation capabilities to a project. |
windows-resources | - | Adds support for including Windows resources in native binaries. |