Gradle 9.1 で気になった新機能2つ


タスク間依存関係のグラフィカル表示

Gradleでは、タスクの実行順序を決定するために有向非巡回グラフ(DAG)が利用されます。

Gradle 9.1 で追加された --task-graph オプションで、有向非巡回グラフ上のタスク間の依存関係を表示できます(プレビュー機能)。

./gradlew build --task-graph

以下のように依存関係が確認できます。

Calculating task graph as no cached configuration is available for tasks: build
Task graph printing is an incubating feature.
Tasks graph for: build
\--- :app:build (org.gradle.api.DefaultTask)
     +--- :app:assemble (org.gradle.api.DefaultTask)
     |    +--- :app:distTar (org.gradle.api.tasks.bundling.Tar)
     |    |    +--- :app:jar (org.gradle.api.tasks.bundling.Jar)
     |    |    |    +--- :app:classes (org.gradle.api.DefaultTask)
     |    |    |    |    +--- :app:compileJava (org.gradle.api.tasks.compile.JavaCompile)
     |    |    |    |    \--- :app:processResources (org.gradle.language.jvm.tasks.ProcessResources)
     |    |    |    \--- :app:compileJava (*)
     |    |    \--- :app:startScripts (org.gradle.api.tasks.application.CreateStartScripts)
     |    |         \--- :app:jar (*)
     |    +--- :app:distZip (org.gradle.api.tasks.bundling.Zip)
     |    |    +--- :app:jar (*)
     |    |    \--- :app:startScripts (*)
     |    \--- :app:jar (*)
     \--- :app:check (org.gradle.api.DefaultTask)
          \--- :app:test (org.gradle.api.tasks.testing.Test)
               +--- :app:classes (*)
               +--- :app:compileJava (*)
               +--- :app:compileTestJava (org.gradle.api.tasks.compile.JavaCompile)
               |    +--- :app:classes (*)
               |    \--- :app:compileJava (*)
               \--- :app:testClasses (org.gradle.api.DefaultTask)
                    +--- :app:compileTestJava (*)
                    \--- :app:processTestResources (org.gradle.language.jvm.tasks.ProcessResources)

(*) - details omitted (listed previously)

この機能により、タスクを実行せずにタスク間の依存関係を素早く確認することができます。


コンソール表示オプション値 colored の追加

--console コマンドラインオプションcolored が追加されました。

./gradlew build --console=colored

デフォルトの進行状況バーなどの機能なしに、プレーンなログ内のエラーや警告をカラーハイライト付きで出力します。

--console の設定値は以下を設定できます。

  • plain : プレーンテキストのみを生成
  • colored : 進行状況バーなどのリッチなステータス情報を含まないカラー出力を生成
  • auto(デフォルト) : Gradle がターミナルに接続されていない場合plain、接続されている場合は rich を有効にする
  • rich : コンソール出力でカラーおよびその他のリッチ出力を生成
  • verbose : rich に加えライフサイクルログレベルでタスク名と結果を出力

個人的には colored がデフォルトになってほしいところです。

gradle.properties に以下のように設定することで、コマンドラインで指定することなく colored を有効化できます。

org.gradle.console=colored