Gradleアーティファクト依存グラフコマンドとは何ですか?


123

私はこのコメントをGradleドキュメントで読みました:

To deal with problems due to version conflicts, reports with dependency graphs
are also very helpful. Such reports are another feature of dependency management.

ある種の瓶が持ち込まれていますが、それがどこから来ているのかを理解する必要があります。通常はグローバルに除外しますが、ここでは階層に関する情報が必要です。IvyとMavenからこの情報を取得するにはどうすればよいですか?

言うまでもなく、誰かがHibernate jar(大量)を私のjarリストに持ち込んでいます。私はHibernateを使用していないため、その依存関係を排除しようとしているので、本当にだれかを知りたいです。

回答:


127

コマンドはgradle dependenciesであり、その出力はGradle 1.2で大幅に改善されています。(すでに1.2-rc-1を試すことができます。)


実際、私はそれを試しました...私は依存関係が私の最下位レベルのサブプロジェクト(つまり、他の誰もが依存するもの)にあり、メインプロジェクトにないことに気づきました...現時点でそれが悪いか良いかわかりません。
ディーンヒラー2012

関心のある特定のプロジェクトに対してコマンドを実行する必要があります。通常は、cdしてプロジェクトディレクトリに移動し、そこからコマンドを実行します。
Peter Niederwieser 2012

9
これは、すべてのタイプのプロジェクトで機能するわけではありません。私は「設定なし」を取得しており、これを実行するために別の何かを実行する必要があります。うまくいけば、1日のGradleがこれを処理するので、実際のコマンドはpredicatbleになるでしょう。
R.ヴァントゥイスク2014年

2
推移的な依存関係を含めるためのフラグはありますか?
thetwan 2014

1
それらは自動的に含まれます。
Peter Niederwieser 2014

121

ああ、私はマスタープロジェクトに依存関係を持っていなかったので、「gradle依存関係」はそれらのみをリストし、サブプロジェクトの依存関係はリストしないので、正しいコマンドは最終的に

 gradle :<subproject>:dependencies

だから私にとってこれは

 gradle :master:dependencies

20
-r再帰的に言えばいいですね
Blundell 2013年

38

プロジェクトとすべてのサブプロジェクトへの依存関係を確認するには、最上位のbuild.gradleで使用します。

subprojects {
    task listAllDependencies(type: DependencyReportTask) {}
}

次に、gradleを呼び出します。

gradle listAllDependencies

2
ブログの記事でそのアプローチについての詳細:solidsoft.wordpress.com/2014/11/13/...
マルチンZajączkowski

9
~/.gradle/init.gradleこれをすべてのビルドに追加するのではなく、自分に追加できます。次に、あなたのマシンのすべてのプロジェクトで機能しますが、あなただけです。
derekv 2015

24

構成が多い場合、出力はかなり長くなる可能性があります。ランタイム構成の依存関係のみを表示するには、次を実行します。

gradle dependencies --configuration runtime

15

再帰的にサブプロジェクトを含める場合は、いつでも自分で作成できます。

トップレベルに貼り付けますbuild.gradle

task allDeps << {
    println "All Dependencies:"
    allprojects.each { p ->
        println()
        println " $p.name ".center( 60, '*' )
        println()
        p.configurations.all.findAll { !it.allDependencies.empty }.each { c ->
            println " ${c.name} ".center( 60, '-' )
            c.allDependencies.each { dep ->
                println "$dep.group:$dep.name:$dep.version"
            }
            println "-" * 60
        }
    }
}

次で実行:

gradle allDeps

5
gradlew -q :app:dependencies > dependencies.txt

すべての依存関係をファイルdependency.txtに書き込みます


4

react-nativeプロジェクトでgradleの依存関係をデバッグしたい人のために、コマンドは(から実行されますprojectname/android

./gradlew app:dependencies --configuration compile

0

Gradleの最近のバージョン(つまり、5以降)では、--scanフラグを使用してビルドを実行すると、依存関係を含むあらゆる種類の有用な情報が、クリックできるブラウザーで通知されます。

gradlew --scan clean build

それはそのビルドで何が起こっているのかがらくたを分析します。それはかなりきちんとしています。


1
それが唯一のフルグラフを走っていないターゲットを分析:(。
ディーン・ヒラー

ほんとだ!それはあなたが望むものに依存します。実行したターゲットのみの依存関係はさらに強力だと思います。コマンドの1つのセットが間違った動作をするように見える理由を説明します。
ライアン

私は本当に完全なグラフを望んでいるので、各ノードをテストする必要はありません...それはかなり面倒になります...たとえ少し時間がかかっても、それはより便利ですが、実行する方法がわかりません新しいバージョンではそれ。
ディーンヒラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.