Gradleビルドランゲージリファレンス

改めてG* Advent Calendar 201112/9にエントリーさせていただきました id:nightmare_tim です。AdventCalender初参戦です。どうぞよろしくお願いします。
今年は、いろいろとうれしい事がありました。その中で、 id:fumokmm さんから始まり #jggug の皆さんと知り合いになれて、いろいろ刺激をいただいている事が、私にとっては大きな一歩でした。皆さんどうもありがとうございますm(_ _)m

今回の主テーマ

今回は、Gradle Build Language Referenceのトップページを翻訳したいと思います。(全体が長いので少し抜粋して、TaskTypeまでとします。)この一連の文書は、Gradleによるビルドを順序立てて説明してあるわけではなく、出来ることを列挙してある文書です。ですので、詳しい皆様がわかりやすく説明してくださっている時のようなAnt、Maven視点からではなく、また、 @literalice 様が翻訳してくださっているチュートリアルとも、違った雰囲気の文書です。この文書を理解することによって、Gradleの全体像が掴めると考えています。最近、思い立って逆引きGradleというページを立ち上げ、この文書を元にサンプルをちょこちょこ作って試しています。(ちょっと他事が忙しくなり滞りぎみですが、また復活させます。)これらが皆様の多少のお役に立てれば良いのですが…。
では、張りきっていきましょう(^o^)/

Gradleビルドスクリプトリファレンス

Version 1.0-milestone-7-20111207124014+0900 2011/12/08現在
紹介
このリファレンスガイドは、様々なタイプのGradleビルド言語のマークアップDSLを記述したものです。
いくつかの基本
あなたが理解すべきなのは少々の基本構想で、それらはあなたがGradleスクリプトを記述する際に助けになるでしょう。
最初に、Gradleスクリプトは設定スクリプトです。スクリプトを実行すると、特有の型のオブジェクトを構成します。例えば、ビルドスクリプトを実行すると、Project型のオブジェクトを形成します。このオブジェクトはスクリプトの代表的な型のオブジェクトから呼び出されます。次に述べる表はGradleスクリプトの各型の代表的な型を示します。
スクリプトの型代表的な型のインスタンス
Build ScriptProject
Init ScriptGradle
Setting ScriptSettings
代表的な型のオブジェクトのプロパティやメソッドはあなたがスクリプトの中で使用することが可能です。
2番目に、すべてのGradleスクリプトScriptインターフェイスをimplementsします。このインターフェイスはあなたがスクリプト内で使用できる多くのプロパティやメソッドを定義しています。
ビルドスクリプトの構造
ビルドスクリプトはゼロかそれ以上のステートメントスクリプトブロックでできています。ステートメントはメソッドの呼び出しや、プロパティの定義や、ローカル変数の宣言を含むことができます。スクリプトブロックはクロージャを引数にとるメソッドの呼び出しです。クロージャは、クロージャ実行時に代表的な型のオブジェクトを構成する設定クロージャとして扱われます。上位のスクリプトブロックを以下にリストします。
ブロック解説
allprojects{ }このプロジェクトとこのプロジェクトの各サブプロジェクトを設定します。
artifacts { }このプロジェクトからの生成物の発行を設定します。
buildscript { }このプロジェクトのビルドスクリプトクラスパスを設定します。
configurations { }このプロジェクトの依存性と成果物の集団を示す設定です。
dependencies { }このプロジェクトの依存性を設定します。
repositories { }このプロジェクトのリポジトリを設定します。
sourceSets { }このプロジェクトのソースセットを設定します。
subprojects { }このプロジェクトのサブプロジェクトを設定します。
ビルドスクリプトもまたGroovyスクリプトであるから、メソッドの定義やクラスの定義等々、Groovyスクリプトに許されているそれらの要素を含むことができます。
核となる型
以下にリストするのはGradleスクリプトで使用される主要な型です。
解説
ProjectこのインターフェイスはあなたのビルドファイルとGradleが対話に使うメインのAPIです。ProjectインターフェイスからGradleのすべての特徴へプログラムとしてアクセスすることができます。
TaskTaskはクラスをコンパイルしたり、javadocを出力するような単純で極小なビルドの作業を表します。
GradleGradleの呼び出しを表します。
Settingsビルドに関係する階層的なProjectインスタンスの構成とインスタンス化を要求する設定を宣言します。
ScriptこのインターフェイスはすべてのGradleの特別なメソッドをいくつか加えたGradleスクリプトによってimplementされています。あなたのコンパイルされたスクリプトクラスもこのインターフェイスをimplementsし、あなたはご自身のスクリプトの中でこのインターフェイスに定義されているメソッドやプロパティを使うことができます。
SourceSetSourceSetはJavaソースやリソースの論理的なグループを表します。
SourceSetOutputすべての出力ディレクトリの集合体(コンパイルしたクラス、加工したリソースなど)-注 SourceSetOutputFileCollectionをextendsしています。
ConfigurationConfigurationは生成物の集まりやそれらの依存性を表します。
ResolutionStrategy依存性解決まわりの戦略を定義します。例えば、強制的に依存性を一定のバージョンにしたり、対立を解決したり、タイムアウトをスナップショットしたりします。
ExtensionAwareDSLの拡張を受け入れることができるオブジェクトを表します。DSLの拡張は実はDSLの中のカスタムされた名前空間です。
ConventionPropertyConventionPropertyは割り当てる事ができますが、変化させることはできません。(たとえオブジェクトがミュータブルだとしても!)
コンテナ型
コンテナ型は様々な宣言要素を取り扱います。(例えばdependencies, configurations, artifactsなど)
解説
ConfigurationContainerConfigurationContainerは責任のある宣言と設定の管理です。Configurationを見てください。
DependencyHandlerDependencyHandlerは依存性の宣言によく使われます。依存性は設定の中にまとめられています。(Configurationを見てください。)
ArtifactHandlerこのクラスは生成された成果物を定義し、設定を付加しています。成果物の生成を作ることは、アーカイブを作ることを意味しません。何が作られるかというと、生成されたファイルを表したり、その成果物はどのように生成されるべきかを示した情報であるドメインオブジェクトです。(例えば、名前です)
タスク型
下記にリストするのは、あなたのGradleスクリプトで使用できるいくつかのタスク型です。
解説
AntlrTaskAntlr文法のパーサーを出力します。
Checkstyleいくつかのソースファイルに対してCheckstyleを走らせます。
CodeNarcいくつかのソースファイルに対してCodeNarcを走らせます。
CompileJavaソースファイルをコンパイルします。
Copy宛先ディレクトリの中にファイルをコピーします。このタスクはしばしばリネームしたり対象をフィルタリングしたりしながらコピーします。タスクはコピーを明確にするためにCopySpecをimplementsします。
CreateStartScriptsTaskはOSに頼ってスタートするスクリプトを作成します。
Deleteファイルやディレクトリを削除します。
Directoryディレクトリを作成します。
DependencyReportTaskプロジェクトの依存性ツリーを表示します。ファイルに出力するように設定できますし、オプションとして互換性のある"ドット"グラフに出力できます。このタイプのインスタンスはあなたがコマンドラインから依存性タスクを実行する時に慣れています。
EarEarファイルを合成します。
Execコマンドラインプロセスを実行します。
GradleBuildGradleによるビルドを実行します。
GroovyCompileGroovyソースファイルをコンパイルします。オプションとしてJavaソースファイルをコンパイルします。
GroovydocGroovyソースからAPIHTMLドキュメントを出力します。オプションとしてJavaソースからも出力します。
JarJarファイルを合成します。
JavadocJavaクラスからAPIHTMLドキュメントを出力します。
JavaExec子プロセスのJavaアプリケーションを実行します。
JettyRunJettyウェブコンテナに組み込まれた展開されたWebアプリケーションを配置します。WebアプリケーションをWarファイルに組み込むことを必要とせず、開発サイクルの時間を節約します。
JettyRunWarJettyウェブコンテナに組み込まれたWarファイルを配置します。
JettyStop組み込みJettyWebコンテナがもし起動していたら、停止します。
PropertyReportTaskプロジェクトのプロパティを表示します。この型のインスタンスはあなたがコマンドラインから実行するプロパティータスクに使われたものです。
ProjectReportTaskビルドのプロジェクトリストを表示します。この型のインスタンスはあなたがコマンドラインから実行するプロジェクトタスクに使われたものです。
ScalaCompileGroovyソースファイルをコンパイルします。オプションとしてScalaソースファイルをコンパイルします。
ScalaDocScalaソースからAPIHTMLドキュメントを出力します。
Sign電子署名をタスク、ファイル、生成される成果物、設定に対して、一つもしくはそれ以上生成するタスクです。
SonarAnalyzeプロジェクト階層の分析し、結果をSonarデータベースに記述します。
Sync行き先ディレクトリのいくつかのソースディレクトリとファイルを含むコンテンツを同時に作動させる。
Tar Tarアーカイブを合成します。
TaskReportTaskプロジェクトのタスクリストを表示します。この型のインスタンスはあなたがコマンドラインから実行するタスクのタスクに使われたものです。
Testテストを実行します。JUnit (3.8.x or 4.x) かTestNGをサポートします。
UploadConfigrationの成果物をリポジトリにアップロードします。
WarWarファイルを合成します。
WrapperGradleのインストールをせずに、あなたのプロジェクトをGradleとともにビルドすることを許可するスクリプトを生成します。(*nixもしくはwindows)
ZipZipアーカイブを合成します。
AbstractArchiveTaskAbstractArchiveTaskはすべてのアーカイブタスクのベースクラスです。

以上

お読みいただきありがとうございます。みなさんよいクリスマスをおすごしください('-'*)☆