[Gradle]タスクの依存関係を表示する
きっかけ
Mavenではビルドライフサイクルの中で、決められた一連のタスクが頭から流れるため、なんとなく覚えていれば「この操作の前に処理を挟みたければあのタスクだな。」等がぱっとわかると思います。
Gradleだと、タスクの自由度の高さがある一方「このタスクってどういう順で実行されるんだけ?そもそもなんでこの順になるんだっけ?」となることがあります(筆者はなりました)。
そこで、Gradleでタスクの依存関係を確認する方法を調査しました。
タスクが実行される順序を確認する
gradle <タスク名> --dry-run
を使用することで、どの順で何のタスクが実行されるかを表示することができます。
>./gradlew build --dry-run :compileJava SKIPPED :processResources SKIPPED :classes SKIPPED :jar SKIPPED :startScripts SKIPPED :distTar SKIPPED :distZip SKIPPED :assemble SKIPPED :compileTestJava SKIPPED :processTestResources SKIPPED :testClasses SKIPPED :test SKIPPED :check SKIPPED :build SKIPPED BUILD SUCCESSFUL in 1s
タスクの依存関係を確認する
gradle-taskinfo
プラグインを使用します
build.gradle
に、以下のように追加します
plugins { id 'org.barfuin.gradle.taskinfo' version '2.0.0' }
gradle tiTree <タスク名>
にて、treeが表示されます。
>./gradlew tiTree assemble > Task :tiTree :assemble (org.gradle.api.DefaultTask) +--- :distTar (org.gradle.api.tasks.bundling.Tar) | +--- :jar (org.gradle.api.tasks.bundling.Jar) | | `--- :classes (org.gradle.api.DefaultTask) | | +--- :compileJava (org.gradle.api.tasks.compile.JavaCompile) | | `--- :processResources (org.gradle.language.jvm.tasks.ProcessResources) | `--- :startScripts (org.gradle.api.tasks.application.CreateStartScripts) | `--- :jar (org.gradle.api.tasks.bundling.Jar) | `--- :classes (org.gradle.api.DefaultTask) | +--- :compileJava (org.gradle.api.tasks.compile.JavaCompile) | `--- :processResources (org.gradle.language.jvm.tasks.ProcessResources) +--- :distZip (org.gradle.api.tasks.bundling.Zip) | +--- :jar (org.gradle.api.tasks.bundling.Jar) | | `--- :classes (org.gradle.api.DefaultTask) | | +--- :compileJava (org.gradle.api.tasks.compile.JavaCompile) | | `--- :processResources (org.gradle.language.jvm.tasks.ProcessResources) | `--- :startScripts (org.gradle.api.tasks.application.CreateStartScripts) | `--- :jar (org.gradle.api.tasks.bundling.Jar) | `--- :classes (org.gradle.api.DefaultTask) | +--- :compileJava (org.gradle.api.tasks.compile.JavaCompile) | `--- :processResources (org.gradle.language.jvm.tasks.ProcessResources) `--- :jar (org.gradle.api.tasks.bundling.Jar) `--- :classes (org.gradle.api.DefaultTask) +--- :compileJava (org.gradle.api.tasks.compile.JavaCompile) `--- :processResources (org.gradle.language.jvm.tasks.ProcessResources) BUILD SUCCESSFUL in 1s 1 actionable task: 1 executed
gradle tiOrder <タスク名>
にて、タスクの順番も表示可能です。
>./gradlew tiOrder assemble > Task :tiOrder In order to execute [:assemble], the following tasks would be executed in this order: 1. :compileJava (org.gradle.api.tasks.compile.JavaCompile) 2. :processResources (org.gradle.language.jvm.tasks.ProcessResources) 3. :classes (org.gradle.api.DefaultTask) 4. :jar (org.gradle.api.tasks.bundling.Jar) 5. :startScripts (org.gradle.api.tasks.application.CreateStartScripts) 6. :distTar (org.gradle.api.tasks.bundling.Tar) 7. :distZip (org.gradle.api.tasks.bundling.Zip) 8. :assemble (org.gradle.api.DefaultTask) BUILD SUCCESSFUL in 1s 1 actionable task: 1 executed
詳しくはリンクより、ドキュメントをご確認ください。
出典
Is there a way to list task dependencies in Gradle? - Stack Overflow