アーティファクトの依存関係ツリーを取得するにはどうすればよいですか?


123

dependency:tree特定のプロジェクトの依存関係ツリーを表示するために使用できます。しかし、私が必要なのは、サードパーティのアーティファクトの依存関係ツリーを確認することです。

空のプロジェクトを作成できると思いますが、もっと簡単なものを探しています(いくつかのアーティファクトに対してこれを行う必要があります)。

回答:


158

1)maven依存プラグインを使用する

pom.xmlのみで単純なプロジェクトを作成します。依存関係を追加して実行します。

mvn dependency:tree

残念ながら、依存関係mojoはpom.xmlを使用する必要があります。そうしないと、次のエラーが発生します。

mojo:ツリーを実行できません。既存のpom.xmlを含むプロジェクトが必要ですが、ビルドはそれを使用していません。

2)Mavenセントラルリポジトリでアーティファクトのpom.xmlを検索します

依存関係は、アーティファクトのpom.xmlに記述されています。Mavenインフラストラクチャを使用してそれを見つけます。

http://search.maven.org/に移動し、groupIdとArtifactIdを入力します。

または、http://repo1.maven.org/maven2/に移動し、最初にプラグインのgroupIdを使用してナビゲートし、後でArtifactIdを使用して、最後にそのバージョンを使用することもできます。

たとえば、org.springframework:spring-coreを参照してください

3)アーティファクトに対してMaven依存プラグインを使用する

依存関係アーティファクトの一部はpom.xmlです。それは依存関係を指定します。そして、このpomでmvn dependency:treeを実行できます。


3
私が言ったように、私はプロジェクトを作成する必要がないようにしたい
IttayD

プロジェクトを「作成」するのではなく、単にPOMファイルをダウンロードするだけです。
ショーンパトリックフロイド

1
新しいプロジェクトを作成する必要はありません。ローカルリポジトリを調べて、atifactのpom.xmlを見つけてください
amra

子モジュールが存在しない場合、これは機能しません。例: `` `mvn -f〜/ .m2 / repository / org / jboss / shrinkwrap / descriptors / shrinkwrap-descriptors-parent / 2.0.0-alpha-10 / shrinkwrap-descriptors-parent-2.0.0-alpha-10。 pom depen dency:tree [INFO]プロジェクトをスキャンしています... [エラー] [エラー] POMの処理中に問題が発生しました:[エラー]子モジュール〜/ .m2 / repository / org / jboss / shrinkwrap / descriptors / shrinkwrap -descriptors-parent / 2.0.0-alpha-10 / api-base of ... / descriptors-parent / 2.0.0-alpha-10 / shrinkwrap-descriptors-parent-2.0.0-alpha-10.pomはありません存在する `` `
Ding-Yi Chen

1
マルチモジュールのMavenプロジェクト(つまり、複数のpom.xmlファイルを含むプロジェクト)の場合、エラーが発生する可能性があります。してみてくださいmvn compile dependency:tree
izogfif

49

サンプルプロジェクトを作成し、それにサードパーティの依存関係を追加する必要がある場合は、次のコマンドを実行して、依存関係の完全な階層を確認できます。

次のmavenコマンドを使用して、特定のアーティファクトを検索できます。

mvn dependency:tree -Dverbose -Dincludes=[groupId]:[artifactId]:[type]:[version]

ドキュメントによると:

各パターンセグメントはオプションであり、完全および部分的な*ワイルドカードをサポートしています。空のパターンセグメントは、暗黙のワイルドカードとして扱われます。

プロジェクトのさまざまなモジュールから「log4j-1.2-api」jarファイルを見つけようとしていると想像してください。

mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-1.2-api

詳細については、こちらをご覧ください

編集:verboseパラメーターを使用する利点にもかかわらず、条件によってはそれほど正確でない場合があることに注意してください。これは、Maven 2アルゴリズムを使用しており、Maven 3で使用すると誤った結果をもたらす可能性があるためです。


2
素晴らしい提案!-Dverbose必要なツリー全体を表示するには十分でした 出力をパイプlessまたは類似してやってあなたは覚えていない場合、クイック検索は素晴らしい作品includesフラグまたは完全またはワイルドカードを使っ提供したくないgroupId:)を
jocull

これは、見ているアーティファクトを含むpom.xmlが存在しないと機能しません。それ以外の場合[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:tree (default-cli): Goal requires a project to execute but there is no POM in this directory (...). Please verify you invoked Maven from the correct directory. -> [Help 1]
Eisenknurr

-Dverboseは依存関係プラグインで廃止されたため、かなり古いバージョンを使用している場合を除き、これは機能しません。
toolforger

6

解決策は、artifactのpom.xmlファイルを使用してdependency:treeを呼び出すことです。

mvn -f "$HOME/.m2/repository/$POM_PATH" dependency:tree

リポジトリのアーティファクトの推移的な依存関係を一覧表示する方法も参照してください


これは、 'distributionManagement.status'のため、中央リポジトリからダウンロードされたアーティファクトでは機能しない可能性があります。アップロード時に中央リポジトリによって追加されます。これにより、pomファイルでのdependency:treeの検証が失敗します。issues.apache.org/jira/browse/MNG-3178を
Arnaud

2

m2eclipseの現在のバージョンを使用している場合(eclipseとmavenを使用している場合は、これを使用する必要があります):

メニューエントリを選択します

Navigate -> Open Maven POM

探しているアーティファクトを入力します。

pomがpomエディターで開きます。ここDependency Hierarchyからタブを選択して、依存関係の階層を表示できます(名前が示すとおり:-))。


2
OK、それからこの答えは他のユーザー向けです:-)
Sean Patrick Floyd

1

アーティファクトが特定のプロジェクトの依存関係ではない場合、最善の策はリポジトリ検索エンジンを使用することです。それらの多くは、特定のアーティファクトの依存関係を記述しています。


私が興味のあるアーティファクトは会社の製品の一部です
IttayD

その後、アムラの答えはあなたの最善の策です、私は恐れています。
ショーンパトリックフロイド

@IttayD:質問でこの種の重要な詳細について言及しないでください。これはIMHOのより良い答えを得るのに役立ちます(また、読者が時間を無駄にしないようにするのにも役立つでしょう)。
Pascal Thivent、2010

0

依存関係ツリーのグラフィカルで検索可能な表現(プロジェクトのすべてのモジュール、推移的な依存関係、およびエビクション情報を含む)を取得したい場合は、UpdateImpactを確認してください:https ://app.updateimpact.com (無料サービス)。

免責事項:私はサイトの開発者の一人です


0

私はこの投稿がかなり古いことを知っていますが、IntelliJを使用している人が依存関係ツリーをIDEで直接見たい場合は、Maven Helperプラグインプラグインをインストールできます。

インストールしたらpom.xmlを開くと、以下のような依存関係分析タブが表示されます。また、競合している依存関係のみをツリー構造として表示するオプションも提供します。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.