ビルドスクリプトの概要
Gradleビルドスクリプトの2つの最も重要な概念は、プロジェクトとタスクです。Gradleビルドは、1つ以上のプロジェクトで構成されます。各プロジェクトには、jarパッケージまたはWebアプリケーションなどの多くのビルドパーツが含まれます。また、アプリケーションをデプロイして環境を構築できる複数のjarパッケージを統合することもできます。
各プロジェクトは1つ以上のタスクで構成されており、各タスクは構築実行中のアトミック操作を表します。コンパイル、パッケージ化、JavaDocの生成、ウェアハウスへの公開など。
プロジェクトとプロジェクト、プロジェクトとタスク、およびタスクとタスクの関係を次の図に示します
。Project1はProject2に依存しているため、最初にProject2をビルドする必要があり、Project2には3つのタスクFGHがあります。 TaskHを実行すると、Project1のタスクもこの依存関係の順序に従って実行されます
プロジェクトオブジェクトの概要
プロジェクトは、ビルドされるコンポーネント(jar / warファイル)を表します。ビルドが開始されると、Gradleはbuild.gradleに基づいてorg.gradle.api.Projectオブジェクトをインスタンス化し、プロジェクト変数を通じてそのメンバーを暗黙的に呼び出します。
プロジェクトの他の一般的な構成:
- plugins apply pluginは、プラグインを導入するために使用されます
- 依存関係
- リポジトリウェアハウスの構成
- タスクタスク
- ext.gradle.propertiesは追加のプロパティを追加します
すべての構成はProjectオブジェクトにカプセル化され、プロジェクトインスタンスによってプロパティで呼び出されます
タスクタスク紹介
各タスクは、主にタスクのアクションとタスクの依存関係を含む、構築および実行中にorg.gradle.api.Taskオブジェクトにカプセル化されます。タスクアクションは、他のタスク、アクションシーケンス、および実行条件に依存するように定義できるアトミック操作を定義します。
タスクの主な操作アクション:
dependsOn:依存関係のある操作
doFirst:タスク実行前のメソッド
doLast、<<:タスク実行後のメソッド
実際の戦闘タスクを書く
前のセクションで作成したgradleプロジェクトに基づいて、build.gradleファイルに直接書き込みます。
コードは次のとおりです。
//演示任务的书写
task t1 {
println "hello t1"
}
task t2(dependsOn: 't1') {
//t2执行之前的操作
doFirst {
println 't2 do first'
}
println 'hello t2'
//t2执行之后的操作
doLast {
println 't2 do last'
}
}
タスクを書き込んだ後、実行を試みます。まず、更新ボタン
をクリックし、ビルドをダブルクリックして実行結果を確認します。
16:51:35: Executing task 'build'...
> Configure project :
hello t1
hello t2
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :jar UP-TO-DATE
> Task :assemble UP-TO-DATE
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :build UP-TO-DATE
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 up-to-date
16:51:36: Task execution finished 'build'.
出力から、プロジェクトの構築はタスク内の操作のみを実行し、doFirstおよびdoLastは実行しなかったことがわかります
otherの下にあるt1をダブルクリックして、実行結果を確認します。
16:55:00: Executing task 't1'...
> Configure project :
hello t1
hello t2
> Task :t1 UP-TO-DATE
BUILD SUCCESSFUL in 0s
16:55:01: Task execution finished 't1'.
otherの下のt2をダブルクリックして、実行結果を確認します。
16:54:04: Executing task 't2'...
> Configure project :
hello t1
hello t2
> Task :t1 UP-TO-DATE
> Task :t2
t2 do first
t2 do last
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
16:54:04: Task execution finished 't2'.
出力によると、
> Configure project :
hello t1
hello t2
このログはプロジェクトのビルドの出力であり、プロジェクトはタスクを実行するときに最初に構成されます
タスク:t2
t2最初に実行
t2最後に実行
t2タスクを実行すると、doFirstおよびdoLastが実行されます
この実験から
、タスクの下で直接定義されたコードは、プロジェクトの構成時に実行され、依存している場合でも、他の時間には実行されないと結論付けることができます。タスクが呼び出されたとき、または実行に依存しているときに、doFirstおよびdoLastの操作のみが呼び出されます。したがって、カスタムタスクのコードは、プロジェクトがビルドされたときに実行されない限り、doFirstまたはdoLastで記述する必要があります。