Gradleを使って、何に依存しているかのツリーを作成することは可能ですか?
私はプロジェクトを持っていて、すべての依存関係を見つけたいので、前方宣言などでそれを少し切り詰めることができるかもしれません。
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>
あなたはコマンドgradle dependencies
で依存関係ツリーをレンダリングすることができます。詳細については、オンラインユーザガイドの 11.6.4プロジェクトの依存関係の一覧表示 のセクションを確認してください。
gradle dependencies
のコンソール出力をナビゲートするのが難しい場合は、 プロジェクトレポートプラグイン を追加できます。
apply plugin: 'project-report'
そして、以下を使ってHTMLレポートを生成します。
$ ./gradlew htmlDependencyReport
レポートは通常build/reports/project/dependencies/index.html
にあります。
多くの場合、完全なtest
、compile
、およびandroidTestCompile
の依存グラフは、一緒に調べるには多すぎます。単にcompile
依存関係グラフが欲しいなら、あなたは使うことができます:
./gradlew app:dependencies --configuration compile
注:compile
はGradleの最近のバージョンでは推奨されなくなり、最近のバージョンではすべてのcompile
依存関係をimplementation
に移行することをお勧めします。ご覧ください この答えはここ
依存関係をグラフで視覚化したい場合は、 gradle-dependency-graph-generator pluginを使用できます。
通常、このプラグインの出力は build/reports/dependency-graph ディレクトリにあり、 0.5.0を使用している場合は3つのファイル(.dot | .png | .svg)が含まれます。 プラグインのバージョン。
実際のアプリの依存グラフの例( チェス時計 ):
私はこの質問が別の答えに値すると信じているので、物事はGradleで前進しました。
Gradle 4.3以降、 " ビルドスキャン "が導入されました。関連情報はすべてGradleのドキュメント( 1 、 2 )にあります。私にとっては、これが依存関係(そして一般的にはビルド)を明確で体系的な方法でチェックする最も簡単な方法になりました。
それらは作成するのがとても簡単です、ただ実行するだけです:
gradle build --scan
(ラッパーを使用している場合は./gradlew build --scan
)
これはあなたがあなたのスキャンを見ることができるところにランダムに生成されたリンクを作り出す。そのリンクに行くとき、あなたはあなたの電子メールを入力してそのリンクを完全に制御することができません、例えば。共有するか削除してください。依存関係だけでなく、あなたのビルドに関する多くの情報を持っています。あなたはあなたの依存関係、それらの階層、それらを得るために使われたリポジトリだけでなく、あなたのビルドに関する他の多くのもの、すなわちそのパフォーマンス(これは大きな複雑なビルドに興味があります) JDKとJVMが使用されたシステム構成、最大ヒープサイズなど.
これはモックプロジェクトの印刷画面です。
ビルドスキャンは、何が起こったのか、またその理由についての洞察を提供するビルドの共有可能な記録です。あなたは無料で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自体はあなたのビルド問題の大部分を処理する方法としてビルドスキャンを促進します。
Android Studioで
1)ターミナルを開き、あなたがプロジェクトのルートフォルダにいることを確認してください。
2)./gradlew app:dependencies
を実行します(グラドルラッパーを使用していない場合は、gradle app:dependencies
を試してください)。
./gradle dependencies
を実行してもプロジェクトのルートフォルダの依存関係ツリーしか表示されないので、上記の方法でappに言及すること、つまり./gradlew app:dependencies
が重要です。
モジュールがbuild.gradleに到達する前に追加のディレクトリがある場合は、./gradlew <module_directory>:<module_name>:dependencies
のようなことをする必要があるかもしれません。疑問がある場合は、./gradlew tasks --all
を実行して名前を確認してください。
Androidの場合は、端末にこれを入力します。
gradlew app:dependencies
それはあなたがのようにアップグレードするためにすべての依存関係と新しいバージョンのものをリストするでしょう
com.Android.support:customtabs:26.1.0 -> 27.1.1 (*)
私もこれを実行するのに便利だと思いました:
./gradlew dI --dependency <your library>
これは依存関係がどのように解決されているか(dependencyInsight
)を示しており、build.gradle
のどこでライブラリを強制または除外する必要があるかをデバッグするのに役立ちます。
https://docs.gradle.org/current/userguide/tutorial_gradle_command_line.html を参照してください。