トップQs
タイムライン
チャット
視点
Gradle
オープンソースソフトウェアビルド自動化ツール ウィキペディアから
Remove ads
GradleはApache AntやApache Mavenのコンセプトに基づくオープンソースビルド自動化システムであり、プロジェクト設定の宣言にはApache Mavenが利用するXML形式ではなくGroovyベース、もしくはKotlin Scriptベースのドメイン固有言語 (DSL) を採用している[2]。Gradleはタスクの起動順序の決定に有向非巡回グラフ(英: Directed Acyclic Graph、DAG)を利用する。
Gradleは非常に大きくなる可能性のあるマルチプロジェクトのビルド用に設計されており、ビルドツリーのどの部分が最新であるかをインテリジェントに決定する増分ビルドをサポートする。[3]このため、最新の増分ビルド部分に依存するタスクを再実行する必要は一切ない。
初期のプラグインはJava、Groovy、およびScalaの開発と配備に第一に焦点を当てられている[4]が、ロードマップにはその他の言語やプロジェクトに対するワークフローが示されている。
Remove ads
Javaプロジェクトの例
Javaソースとリソース用にMavenディレクトリ構造が使われているケースを仮定する。Mavenディレクトリ構造はそれぞれsrc/main/java、src/main/resources、src/test/java、src/test/resourcesである。
build.gradle
plugins {
java
}
gradlew buildを実行することで以下を得る:
> gradlew build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
BUILD SUCCESSFUL
Javaプラグインは全てのタスクの入出力の間における依存関係の有向非巡回グラフ内タスクとして予想されるMavenライフサイクルを多数エミュレートする。このシンプルなケースではbuildタスクはcheckタスクとassembleタスクに依存しており、同様にcheckタスクはtestタスクに、assembleタスクはjarタスクに依存している。
Mavenの慣例に従わないプロジェクト用として、Gradleはディレクトリ構造を設定できる。以下はソースファイルがMavenによる慣例のsrc/main/javaではなくsrc/javaに含まれるプロジェクトをサポートするための例である:
build.gradle
apply plugin: 'java'
sourceSets.main.java.srcDirs = ['src/java']
Remove ads
Antマイグレーション例
GradleはAntと非常に緊密な統合を行うことができ、ビルド中にAntビルドファイルを直接インポート可能なスクリプトとして扱う。以下は単純化したAntターゲットをGradleタスクに組み込んだ例である:
build.xml
<project>
<target name="ant.target">
<echo message="Running ant.target!"/>
</target>
</project>
build.gradle
ant.importBuild 'build.xml'
gradle ant.targetを実行することで以下を得る:
> gradle ant.target
:ant.target
[ant:echo] Running ant.target!
BUILD SUCCESSFUL
Remove ads
関連項目
- ビルド自動化ソフトウェアの一覧
脚注
参考文献
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads