Gradleを使用して、何に依存するかというツリーを作成することは可能ですか?
私にはプロジェクトがあり、すべての依存関係を見つけたいので、前方宣言などで少し整理できるようにしたいと思います。
gradle dependencies
うまくいくはずです。みんながgradlew app:dependencies
Androidを持っているからだと思う。
Gradleを使用して、何に依存するかというツリーを作成することは可能ですか?
私にはプロジェクトがあり、すべての依存関係を見つけたいので、前方宣言などで少し整理できるようにしたいと思います。
gradle dependencies
うまくいくはずです。みんながgradlew app:dependencies
Androidを持っているからだと思う。
回答:
Androidの場合、この行を使用します
gradle app:dependencies
またはgradleラッパーがある場合:
./gradlew app:dependencies
app
プロジェクトモジュールはどこにありますか。
また、あなたは何かがあるかどうかを確認したい場合はcompile
対testCompile
対androidTestCompile
でそれを引っ張っているものと同様の依存関係:
./gradlew :app:dependencyInsight --configuration compile --dependency <name>
./gradlew :app:dependencyInsight --configuration testCompile --dependency <name>
./gradlew :app:dependencyInsight --configuration androidTestCompile --dependency <name>
./gradlew
している場合は、代わりに使用しますgradle
Project 'app' not found in root project
これらのコマンドを実行するとエラーが発生します。しかしベンジャミンの解決策はうまくいった。
./gradlew :dependencies
に動作します。すべてのプロジェクトの依存関係がリストされますが、適切なものを見つけるのは簡単です。
コマンドを使用して、依存関係ツリーをレンダリングできますgradle dependencies
。詳細については、オンラインユーザーガイドのセクション11.6.4プロジェクトの依存関係の一覧表示を確認してください。
build.gradle
ファイルを含まない)でコマンドを実行しているか、ビルドファイルがプラグインを適用していません。
./gradlew dependencies
のコンソール出力をナビゲートするのが難しいgradle dependencies
場合は、プロジェクトレポートプラグインを追加できます。
apply plugin: 'project-report'
そして、以下を使用してHTMLレポートを生成します。
$ ./gradlew htmlDependencyReport
レポートは通常、次の場所にあります build/reports/project/dependencies/index.html
gradle htmlDependencyReport
Android Studio(少なくともv2.3.3以降)では、UIから直接コマンドを実行できます。
クリックしてGradleのタブを、次にダブルクリックで:yourmodule - >タスク- >アンドロイド- > androidDependencies
ツリーはGradle Consoleタブに表示されます
多くの場合、完全なtest
、compile
と、androidTestCompile
依存関係グラフは、一緒に検討することが多すぎます。単にcompile
依存関係グラフが必要な場合は、次のように使用できます。
./gradlew app:dependencies --configuration compile
注:compile
は、Gradleの最新バージョンでは非推奨となっており、最新バージョンでは、すべてのcompile
依存関係をに移行することをお勧めしますimplementation
。こちらの回答をご覧ください
依存関係をグラフで視覚化したい場合は、gradle-dependency-graph-generatorプラグインを使用できます。
通常、このプラグインの出力は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のサーバーを使用する標準のGradleディストリビューションに関するものでした。
3)Gradle自体は、ビルドスキャンを、ビルドの問題のほとんどに対処する方法として促進します。
gradle build --scan
。また、ビルドの詳細をインターネット上のどこかに公開し、削除するには、作業用の電子メールアドレスに関連付ける必要があるという明確な警告ではありません 。
gradle build --scan
cmdで実行する と、次のプロンプトが表示されます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
(同じタイプのリンクをランダムに配置)。そのため、以前は適切に警告していると思います。(1/2)
Android Studio内
1)ターミナルを開き、プロジェクトのルートフォルダーにいることを確認します。
2)実行します./gradlew app:dependencies
(gradleラッパーを使用していない場合は、を試してください gradle app:dependencies
)
実行して./gradle dependencies
もプロジェクトのルートフォルダの依存関係ツリーしか表示されないことに注意してください。したがって、上記の方法でアプリに言及すること、つまり ./gradlew app:dependencies
重要です。
私もこれを実行するのに便利だとわかりました:
./gradlew dI --dependency <your library>
これは、依存関係がどのように解決されるかを示し(dependencyInsight
)、ライブラリを強制または除外する必要がある場所をデバッグするのに役立ちますbuild.gradle
参照:https : //docs.gradle.org/current/userguide/tutorial_gradle_command_line.html
私にとっては、それはただ一つのコマンドでした
build.gradleに追加 plugin
apply plugin: 'project-report'
次に、cmdに移動し、次のコマンドを実行します
./gradlew htmlDependencyReport
これは私にHTMLレポートWOW Htmlレポートを与えます💕
それはすべての私の主です。
最後に2つのステップですべての依存関係を単一のファイルにしたい場合。これをbuild.gradle.kts
プロジェクトのルートに追加します。
project.rootProject.allprojects {
apply(plugin="project-report")
this.task("allDependencies", DependencyReportTask::class) {
evaluationDependsOnChildren()
this.setRenderer(AsciiDependencyReportRenderer())
}
}
次に適用します。
./gradlew allDependencies | grep '\-\-\-' | grep -Po '\w+.*$' | awk -F ' ' '{ print $1 }' | sort | grep -v '\{' | grep -v '\[' | uniq | grep '.\+:.\+:.\+'
これにより、プロジェクトおよびサブプロジェクトのすべての依存関係と、すべてのサードパーティの依存関係が提供されます。
これをプログラムで実行したい場合は、依存関係のカスタムレンダラーが必要になりAsciiDependencyReportRenderer
ます。デフォルトでは、依存関係のASCIIグラフを出力するを拡張することから始めることができます。