Gradleの依存関係は`--configuration compile`で確認できる

  • Gradle
  • Android

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

Androidプロジェクトで、今使ってるライブラリが実際どのバージョンで解決されているか確認したくなることがある。build.gradleに書いたcompileの指定はあくまで宣言であって、実際に依存関係解決(dependency resolution)でどのバージョンが採用されるかは別問題。推移的依存(transitive dependency)でバージョンが競合していることもよくある。

そういうときはdependenciesタスクを使う。

$ ./gradlew -q dependencies app:dependencies --configuration compile

これでルートプロジェクトとappモジュール、両方のcompileconfigurationにぶら下がる依存関係がツリー形式で出てくる。

出力はだいたいこんな感じになる。

compile - Classpath for compiling the main sources.
+--- com.example:library-a:1.2.0
| \--- com.example:library-core:1.0.0
\--- com.example:library-b:2.0.0
\--- com.example:library-core:1.1.0 -> 1.1.0

->が出てる行はバージョン競合が起きていて、Gradleが解決した結果を示している箇所。上の例だとlibrary-coreが1.0.0と1.1.0で競合して、1.1.0が採用されたことが分かる。

-qオプションを付けているのは、ビルドログのノイズを消してdependenciesタスクの出力だけ見たいから。付けないとGradleの通常のログと混ざって読みにくい。

compileはメインのソースセット用のconfigurationで、テスト用はtestCompile、実行時のみ必要なものはruntimeという別のconfigurationになっている。用途によって指定するconfiguration名を変える必要がある。