The Groovy plugin extends the Java plugin to add support for Groovy projects. It can deal with Groovy code, mixed Groovy and Java code, and even pure Java code (although we don't necessarily recommend to use it for the latter). The plugin supports joint compilation, which allows you to freely mix and match Groovy and Java code, with dependencies in both directions. For example, a Groovy class can extend a Java class that in turn extends a Groovy class. This makes it possible to use the best language for the job, and to rewrite any class in the other language if needed.
Groovyプラグインは、Javaプラグインを拡張し、Groovyプロジェクトのサポートを追加したものです。 GroovyコードとGroovy/Javaの混合コードをサポートするほか、Javaコードのみのプロジェクトを取り扱うこともできます(Javaコードだけのプロジェクトにこのプラグインを使うことはあまり推奨しませんが)。 また、JavaとGroovyのジョイントコンパイルをサポートしており、GroovyコードとJavaコードを自由に混ぜ合わせたり、お互いに統合させることができます。 例えば、GroovyのクラスはJavaのクラスを継承できますし、更にそのJavaクラスがGroovyクラスを継承していても問題ありません。時々に応じて最適な言語を選択でき、必要なときにはいつでもクラスを別言語で書き直すことができます。
To use the Groovy plugin, include the following in your build script:
Groovyプラグインを使うためには、ビルドスクリプトに下記を含めます:
The Groovy plugin adds the following tasks to the project.
Groovyプラグインは、以下のタスクをプロジェクトに追加します。
表24.1 Groovyプラグイン - タスクGroovy plugin - tasks
タスク名Task name | 依存先Depends on | 型Type | 説明Description |
compileGroovy |
compileJava |
GroovyCompile |
製品のGroovyソースファイルをコンパイルするCompiles production Groovy source files. |
compileTestGroovy |
compileTestJava |
GroovyCompile |
テストのGroovyソースファイルをコンパイルするCompiles test Groovy source files. |
compile |
compile |
GroovyCompile |
特定のソースセットのGroovyソースファイルをコンパイルするCompiles the given source set's Groovy source files. |
groovydoc |
- | Groovydoc |
製品のGroovyソースファイルのAPIドキュメントを生成するGenerates API documentation for the production Groovy source files. |
The Groovy plugin adds the following dependencies to tasks added by the Java plugin.
Groovyプラグインは、Javaプラグインによって追加されたタスクに以下の依存関係を追加します。
表24.2 Groovyプラグイン - タスクの追加依存関係Groovy plugin - additional task dependencies
タスク名Task name | 依存先Depends on |
classes | compileGroovy |
testClasses | compileTestGroovy |
sourceSet Classes |
compileSourceSet Groovy |
The Groovy plugin assumes the project layout shown in 表24.3「Groovyプラグイン - プロジェクトレイアウトGroovy plugin - project layout」. All the Groovy source directories can contain Groovy and Java code. The Java source directories may only contain Java source code. [18] None of these directories need to exist or have anything in them; the Groovy plugin will simply compile whatever it finds.
Groovyプラグインでは、表24.3「Groovyプラグイン - プロジェクトレイアウトGroovy plugin - project layout」に示したようなプロジェクトレイアウトを想定しています。すべてのGroovyソースディレクトリは、GroovyおよびJavaコードを含むことができます。Javaソースディレクトリは、Javaソースコードだけしか含むことができません。 [19] これらのどのディレクトリも、存在しなかったり、何も含んでいなくてもかまいません。Groovyプラグインは、単純に見つけたディレクトリをコンパイルするだけです。
表24.3 Groovyプラグイン - プロジェクトレイアウトGroovy plugin - project layout
ディレクトリDirectory | 意味Meaning | |
src/main/java
|
製品のJavaソースProduction Java source | |
src/main/resources
|
製品のリソースProduction resources | |
src/main/groovy
|
製品のGroovyソース。ジョイントコンパイルするJavaソースを含んでもよいProduction Groovy sources. May also contain Java sources for joint compilation. | |
src/test/java
|
テストのJavaソースTest Java source | |
src/test/resources
|
テストのリソースTest resources | |
src/test/groovy
|
テストのGroovyソース。ジョイントコンパイルするJavaソースを含んでもよいTest Groovy sources. May also contain Java sources for joint compilation. | |
src/
|
特定のソースセットのJavaソースJava source for the given source set | |
src/
|
特定のソースセットのリソースResources for the given source set | |
src/
|
特定のソースセットのGroovyソース。ジョイントコンパイルするJavaソースを含んでもよいGroovy sources for the given source set. May also contain Java sources for joint compilation. |
Just like the Java plugin, the Groovy plugin allows you to configure custom locations for Groovy production and test sources.
Javaプラグインと同じように、Groovyプラグインも製品コードやテストコードの場所を変更することができます。
例24.2 Groovyソースレイアウトのカスタマイズ
build.gradle
sourceSets { main { groovy { srcDirs = ['src/groovy'] } } test { groovy { srcDirs = ['test/groovy'] } } }
Because Gradle's build language is based on Groovy, and parts of Gradle are implemented in Groovy, Gradle already ships with a Groovy library (2.3.3 as of Gradle 2.0). Nevertheless, Groovy projects need to explicitly declare a Groovy dependency. This dependency will then be used on compile and runtime class paths. It will also be used to get hold of the Groovy compiler and Groovydoc tool, respectively.
Gradleのビルド言語はGroovyをベースにしており、Gradleの一部もGroovyで実装されているので、Gradleには既にGroovyライブラリ(Gradle2.0からは2.3.3)が同梱されています。ですが、Groovyプロジェクトでは明示的にGroovyへの依存関係を宣言しなければなりません。 ここで宣言したGroovyへの依存関係は、コンパイルクラスパスおよび実行時クラスパスに追加されます。さらに、GroovyコンパイラおよびGroovydocツールを取得するのにも使用されます。
If Groovy is used for production code, the Groovy dependency should be added to the compile
configuration:
Groovyが製品コードで使われている場合は、Groovy依存関係はcompile
コンフィギュレーションに追加してください。
例24.3 Groovyプラグインの設定
build.gradle
repositories {
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.6'
}
If Groovy is only used for test code, the Groovy dependency should be added to the testCompile
configuration:
Groovyがテストコードのみで使われている場合は、Groovy依存関係はtestCompile
コンフィギュレーションに追加してください。
To use the Groovy library that ships with Gradle, declare a localGroovy()
dependency. Note that
different Gradle versions ship with different Groovy versions; as such, using localGroovy()
is less
safe then declaring a regular Groovy dependency.
Gradleに同梱されているGroovyを使うには、localGroovy()
を依存関係で宣言してください。ただ注意してほしいのは、Gradleのバージョンが異なれば同梱されているGroovyのバージョンも異なる可能性があるということです。localGroovy()
は、普通の宣言方法に比べると安全とは言えません。
The Groovy library doesn't necessarily have to come from a remote repository. It could also come from a local
lib
directory, perhaps checked in to source control:
Groovyライブラリは、必ずしもリモートのリポジトリから取得しなければならないわけではありません。ローカルのlib
ディレクトリなどに格納して、ソースコード管理システムにチェックインしたりすることもできます。
例24.6 Groovyをファイル依存関係で設定する
build.gradle
repositories { flatDir { dirs 'lib' } } dependencies { compile module('org.codehaus.groovy:groovy:1.6.0') { dependency('asm:asm-all:2.2.3') dependency('antlr:antlr:2.7.7') dependency('commons-cli:commons-cli:1.2') module('org.apache.ant:ant:1.9.3') { dependencies('org.apache.ant:ant-junit:1.9.3@jar', 'org.apache.ant:ant-launcher:1.9.3') } } }
The “module
” reference may be new to you. See 51章依存関係の管理 for more information about this and other
information about dependency management.
GroovyCompile
and Groovydoc
tasks consume Groovy code in two ways: on their classpath
,
and on their groovyClasspath
. The former is used to locate classes referenced by the source code, and will typically
contain the Groovy library along with other libraries. The latter is used to load and execute the Groovy compiler and Groovydoc tool,
respectively, and should only contain the Groovy library and its dependencies.
GroovyCompile
タスクとGroovydoc
タスクは二つの用途でGroovyを使用します。タスクのclasspath
とgroovyClasspath
です。前者はソースコードから参照されているクラスを配置するパスで、Groovyライブラリも典型的には他のライブラリと一緒に格納されます。後者はGroovyコンパイラとGroovydocツールをロードして実行するために使用されるパスで、Groovyライブラリとその依存関係のみが配置されていなければなりません。
Unless a task's groovyClasspath
is configured explicitly, the Groovy (base) plugin will try to infer it
from the task's classpath
. This is done as follows:
groovyClasspath
が明示的に設定されていない場合、Groovy(base)プラグインはタスクのclasspath
から以下のように設定値を推論しようとします。
groovy-all(-indy)
Jar is found on classpath
, that jar will be added to
groovyClasspath
.groovy-all(-indy)
のJarがclasspath
に見つかれば、そのjarをgroovyClasspath
にも追加します。
groovy(-indy)
jar is found on classpath
, and the project has at least one repository declared,
a corresponding groovy(-indy)
repository dependency will be added to groovyClasspath
.groovy(-indy)
のJarがclasspath
に見つかれば、そして少なくとも一つのリポジトリがプロジェクトに設定されていれば、リポジトリから対応するgroovy(-indy)
の依存関係を取得してgroovyClasspath
に追加します。
groovyClasspath
could not be inferred.
それ以外の場合は、groovyClasspath
の推論に失敗した旨のメッセージを出力してタスクは失敗します。
Note that the “-indy
” variation of each jar refers to the version with invokedynamic
support.
The Groovy plugin does not add any convention properties to the project.
Groovyプラグインは、プロジェクトには規約プロパティを追加しません。
The Groovy plugin adds the following convention properties to each source set in the project. You can use these properties in your build script as though they were properties of the source set object (see 「規約 Conventions」).
Groovyプラグインは、プロジェクトの各ソースセットに以下の規約プロパティを追加します。これらのプロパティは、あたかもソースセットオブジェクトのプロパティであるかのようにビルドスクリプト内で使うことができます(「規約 Conventions」参照)。
表24.4 Groovyプラグイン - ソースセットプロパティGroovy plugin - source set properties
プロパティ名Property name | 型Type | デフォルト値Default value | 説明Description |
groovy
|
SourceDirectorySet (読取り専用)
SourceDirectorySet (read-only)
|
非null Not null |
このソースセットのGroovyソースファイル。Groovyソースディレクトリにある、すべての.groovy と.java ファイルを含み、その他のタイプのファイルは含まない
The Groovy source files of this source set. Contains all .groovy and
.java files found in the Groovy source directories, and excludes all other
types of files.
|
groovy.srcDirs
|
Set<File> 。「入力ファイルセットを指定する Specifying a set of input files」で説明されたものなら何でも設定可能
Set<File> . Can set using anything described in 「入力ファイルセットを指定する Specifying a set of input files」.
|
[
|
このソースセットのGroovyソースファイルを含むソースディレクトリ。ジョイントコンパイルするJavaソースファイルも含む場合がある The source directories containing the Groovy source files of this source set. May also contain Java source files for joint compilation. |
allGroovy
|
FileTree (読取り専用)
FileTree (read-only)
|
非null Not null |
このソースセットの全Groovyソースファイル。Groovyソースディレクトリにある.groovy ファイルのみを含む
All Groovy source files of this source set. Contains only the .groovy files
found in the Groovy source directories.
|
These properties are provided by a convention object of type GroovySourceSet
.
上記プロパティはGroovySourceSet
型の規約オブジェクトにより提供されます。
The Groovy plugin also modifies some source set properties:
また、Groovyプラグインは、いくつかのソースセットプロパティを修正します:
表24.5 Groovyプラグイン - ソースセットプロパティGroovy plugin - source set properties
プロパティ名Property name | 変更点Change |
allJava
|
Groovyソースディレクトリにあるすべての.java ファイルを追加Adds all .java files found in the Groovy source directories. |
allSource
|
Groovyソースディレクトリにあるすべてのソースファイルを追加Adds all source files found in the Groovy source directories. |
The Groovy plugin adds a GroovyCompile
task for
each source set in the project. The task type extends the JavaCompile
task (see 「CompileJavaCompileJava」).
The GroovyCompile
task supports most configuration options of the official Groovy compiler.
Groovyプラグインは、プロジェクトの各ソースセットにGroovyCompile
タスクを追加します。このタスクはJavaCompile
タスクを拡張したものです(「CompileJavaCompileJava」参照)。groovyOptions.useAnt
がtrueになっていなければ、GradleネイティブのGroovyコンパイラ統合が使用されます。Antベースのコンパイラを使うこともできますが、ほとんどのプロジェクトではネイティブのGroovyコンパイラを使ったほうがいいでしょう。
このGroovyCompile
タスクは、公式Groovyコンパイラのオプションをほとんど全てサポートしています。
表24.6 Groovyプラグイン - GroovyCompileプロパティGroovy plugin - GroovyCompile properties
タスクプロパティTask Property | 型Type | デフォルト値Default Value |
classpath
|
FileCollection |
|
source
|
FileTree 。「入力ファイルセットを指定する Specifying a set of input files」で説明されたものなら何でも設定可能FileTree . Can set using anything described in 「入力ファイルセットを指定する Specifying a set of input files」. |
|
destinationDir
|
File . |
|
groovyClasspath
|
FileCollection |
groovy configuration if non-empty; Groovy library found on classpath otherwise |
[18] We are using the same conventions as introduced by Russel Winder's Gant tool (http://gant.codehaus.org).
[19] Russel WinderのGant (http://gant.codehaus.org)が導入したのと同じ規約を使っています。