web-dev-qa-db-ja.com

Gradleを使って依存関係ツリーを見つける

Gradleを使って、何に依存しているかのツリーを作成することは可能ですか?

私はプロジェクトを持っていて、すべての依存関係を見つけたいので、前方宣言などでそれを少し切り詰めることができるかもしれません。

393
user3286701

Androidの場合は、この行を使用してください

 gradle app:dependencies

またはあなたがグラドルラッパーを持っているならば:

./gradlew app:dependencies

appはプロジェクトモジュールです。

さらに、何かがcompile vs. testCompile vs androidTestCompile依存関係であるかどうか、またそれが引き込まれているものがあるかどうかをチェックしたい場合は、次のようにします。

./gradlew :app:dependencyInsight --configuration compile --dependency <name>
./gradlew :app:dependencyInsight --configuration testCompile --dependency <name>
./gradlew :app:dependencyInsight --configuration androidTestCompile --dependency <name>
475
Chad Bingham

あなたはコマンドgradle dependenciesで依存関係ツリーをレンダリングすることができます。詳細については、オンラインユーザガイドの 11.6.4プロジェクトの依存関係の一覧表示 のセクションを確認してください。

192

gradle dependenciesのコンソール出力をナビゲートするのが難しい場合は、 プロジェクトレポートプラグイン を追加できます。

apply plugin: 'project-report'

そして、以下を使ってHTMLレポートを生成します。

$ ./gradlew htmlDependencyReport

レポートは通常build/reports/project/dependencies/index.htmlにあります。

それはこのように見えます: enter image description here

114
Devstr

Android Studio(少なくともv2.3.3以降)では、UIから直接コマンドを実行できます。

Gradle タブをクリックしてから :yourmodule - > Tasks - > Android - > androidDependencies をダブルクリックします。

ツリーは Gradleコンソール タブに表示されます。

An image is worth a thousand words

68

多くの場合、完全なtestcompile、およびandroidTestCompileの依存グラフは、一緒に調べるには多すぎます。単にcompile依存関係グラフが欲しいなら、あなたは使うことができます:

./gradlew app:dependencies --configuration compile

出典: Gradleドキュメントセクション4.7.6

注:compileはGradleの最近のバージョンでは推奨されなくなり、最近のバージョンではすべてのcompile依存関係をimplementationに移行することをお勧めします。ご覧ください この答えはここ

24
David Rawson

依存関係をグラフで視覚化したい場合は、 gradle-dependency-graph-generator pluginを使用できます。

通常、このプラグインの出力は build/reports/dependency-graph ディレクトリにあり、 0.5.0を使用している場合は3つのファイル(.dot | .png | .svg)が含まれます。 プラグインのバージョン。

実際のアプリの依存グラフの例( チェス時計 ):

graph

14
David Miguel

私はこの質問が別の答えに値すると信じているので、物事はGradleで前進しました。
Gradle 4.3以降、 " ビルドスキャン "が導入されました。関連情報はすべてGradleのドキュメント( 12 )にあります。私にとっては、これが依存関係(そして一般的にはビルド)を明確で体系的な方法でチェックする最も簡単な方法になりました。

それらは作成するのがとても簡単です、ただ実行するだけです:

gradle build --scan  

(ラッパーを使用している場合は./gradlew build --scan

これはあなたがあなたのスキャンを見ることができるところにランダムに生成されたリンクを作り出す。そのリンクに行くとき、あなたはあなたの電子メールを入力してそのリンクを完全に制御することができません、例えば。共有するか削除してください。依存関係だけでなく、あなたのビルドに関する多くの情報を持っています。あなたはあなたの依存関係、それらの階層、それらを得るために使われたリポジトリだけでなく、あなたのビルドに関する他の多くのもの、すなわちそのパフォーマンス(これは大きな複雑なビルドに興味があります) JDKとJVMが使用されたシステム構成、最大ヒープサイズなど.

これはモックプロジェクトの印刷画面です。

Build scan example

ビルドスキャンは、何が起こったのか、またその理由についての洞察を提供するビルドの共有可能な記録です。あなたは無料でscans.gradle.comでビルドスキャンを作成することができます。

ただし、ビルドプロセスの情報が送信されるはGradleサーバーに送信されます。あなたはあなたの検査を終えたときあなたはそれを削除するための完全なコントロールを持っています。

最後に、4.3より前のGradleバージョンでビルドスキャンを使用することもできます。ビルドスクリプトに手動でスキャンプラグインを追加するだけです。

編集
コメントからのいくつかのフィードバックを、いくつかの追加のメモを組み込んでいます。
1)誤って、またはあなたのビルドのための情報がオンラインになることを理解することなしにこれを行うことは非常に困難です(それを削除することができますが、それでもオンラインです)。

gradle build --scanを実行すると、次のメッセージが表示されます。

Publishing a build scan to scans.gradle.com requires accepting the Gradle
Terms of Service defined at https://gradle.com/terms-of-service. Do you
accept these terms? [yes, no]

あなたは明示的にyesを書く必要があり、それからメッセージは続きます:

Publishing build scan...  
https://gradle.com/s/a12en0dasdu

2)Gradle Enterpriseでは、グラドルビルドスキャンを自分のサーバーでホストできます。しかし、私はこれに関する経験がなく、私が提案したアプローチはあなたのビルドスキャンにGradleのサーバーを使う、標準的なGradle配布についてでした。

3)Gradle自体はあなたのビルド問題の大部分を処理する方法としてビルドスキャンを促進します。

8
tryman

Android Studioで

1)ターミナルを開き、あなたがプロジェクトのルートフォルダにいることを確認してください。

2)./gradlew app:dependenciesを実行します(グラドルラッパーを使用していない場合は、gradle app:dependenciesを試してください)。

./gradle dependenciesを実行してもプロジェクトのルートフォルダの依存関係ツリーしか表示されないので、上記の方法でappに言及すること、つまり./gradlew app:dependenciesが重要です。

6

モジュールがbuild.gradleに到達する前に追加のディレクトリがある場合は、./gradlew <module_directory>:<module_name>:dependenciesのようなことをする必要があるかもしれません。疑問がある場合は、./gradlew tasks --allを実行して名前を確認してください。

5
林果皞

Androidの場合は、端末にこれを入力します。

gradlew app:dependencies

それはあなたがのようにアップグレードするためにすべての依存関係と新しいバージョンのものをリストするでしょう

com.Android.support:customtabs:26.1.0 -> 27.1.1 (*)
4
Remy

私もこれを実行するのに便利だと思いました:

./gradlew dI --dependency <your library>

これは依存関係がどのように解決されているか(dependencyInsight)を示しており、build.gradleのどこでライブラリを強制または除外する必要があるかをデバッグするのに役立ちます。

https://docs.gradle.org/current/userguide/tutorial_gradle_command_line.html を参照してください。

3