

Gradleの依存関係は`--configuration compile`で確認できる
この記事は、構成と文章の整理に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名を変える必要がある。