2012-02-02 10 views
21

私はいくつかのスクリプトを書いています。私は、任意のpomのためのすべての親のポムのリストを取得する必要があります。依存関係プラグインは、pomの依存関係セクションにリストされている依存関係にのみ関心があるようですが、Mavenが動作するために必要な依存関係である親pomsを表示する方法はないようです。Maven POM階層を表示するにはどうすればいいですか?

何か基本的なものがありませんか?

答えて

22

pom.xmlの親POMのチェーンを表示する単純なMavenコマンドはありません。これは、一般的に聞いている質問ではありません(詳細は後述)。あなたのスクリプトでは、pom.xmlファイルを解析し、親のアーティファクト座標を取得し、アーティファクトのpom.xmlファイルを保持してからpom.xmlファイルを解析して繰り返します。申し訳ありませんが、知っているショートカットはありませんが、です。

あなたは正しくです親のpomはプロジェクトの依存関係ですが、リテラルなMaven依存関係ではなく完全に異なった扱いをしています。アクティブなプロファイル、settings.xmlファイル、およびインストールディレクトリからのMavenスーパーPOMは、すべて、プロジェクトの有効pomを作成するために一緒に結合されます。効果的なPOMは、Mavenが実際にその作業を行うために使用するものです。したがって、基本的に、親のpom継承チェーンはすでに解決され、依存関係プラグイン(または他のプラグイン)がアクティブ化される前に結合されます。

ほとんどの人は一般的に尋ねる質問には、「Mavenのは、すべてのものを組み合わせて行われているときのように私の本当のpom.xml 本当にを見て何をするか?」ですまたは、「結果は私の相続財産の親の養子縁組は何ですか?または 'pom.xmlのプロパティはどのようにアクティブなプロファイルの影響を受けますか?'効果的なポンはあなたにこれすべてを伝えます。

親のpom.xmlを見たい場合は、これを読んでいる他の人には、M2Eclipse POMエディタでpom.xmlを開いて、その上の親アーティファクトリンクをクリックしてください概要タブ。このようにして、pomごとに1回だけクリックするだけで、pom.xmlファイルのチェーンをすばやく移動できます。これは、3つ以上の相続の親仲間を持っていた奇妙なプロジェクトです。

効果的なpomを表示するには、コマンドmvn help:effective-pomを実行します。あるいは、M2EclipseのPOMエディタのEffective POMタブをクリックすることもできます。

+0

グレート答え、ありがとう!質問を投稿した後の翌日には応答がないので、私はMavenの 'Maven-model'ライブラリを使って私に情報を与えるjava utilを書いた。 Modelオブジェクト(POMインスタンス)にはgetParent()メソッドがあり、再帰的にツリーを読み取ることができます。 – Todd

7

Basicソリューション

mvn dependency:display-ancestors

は、このような親が表示されます。

[INFO] Ancestor POMs: org.springframework.boot:spring-boot-starter-parent:1.4.0.RELEASE <- org.springframework.boot:spring-boot-dependencies:1.4.0.RELEASE

それが依存関係のプラグインのバージョン2.9+に必要です。(私が書いたこと)

mvn org.apache.maven.plugins:maven-dependency-plugin:2.9:display-ancestors 

改善されたソリューション階層のmaven-pluginの輸入POMSについての追加情報を表示することができます:あなたのプラグインが古く、何らかの理由であなたが更新できない場合は、呼び出しこのような:

[INFO] Displaying hierarchy. Set level=full to display dependencies in dependencyManagement 
[INFO] PARENT org.springframework.boot:spring-boot-samples:1.4.1.BUILD-SNAPSHOT 
[INFO] PARENT org.springframework.boot:spring-boot-starter-parent:1.4.1.BUILD-SNAPSHOT 
[INFO]  PARENT org.springframework.boot:spring-boot-dependencies:1.4.1.BUILD-SNAPSHOT 
[INFO]  IMPORT org.springframework:spring-framework-bom:4.3.3.BUILD-SNAPSHOT 
[INFO]  IMPORT org.springframework.data:spring-data-releasetrain:Hopper-BUILD-SNAPSHOT 
[INFO]   PARENT org.springframework.data.build:spring-data-build:1.8.4.BUILD-SNAPSHOT 
[INFO]  IMPORT org.springframework.integration:spring-integration-bom:4.3.1.RELEASE 
[INFO]  IMPORT org.springframework.security:spring-security-bom:4.1.3.RELEASE 

詳細はこちらです:https://github.com/ExampleDriven/hierarchy-maven-plugin

+1

そのゴールが利用可能になるには、少なくともv2.9の依存関係プラグインが必要です。https://maven.apache.org/plugins/maven-dependency-plugin/display-ancestors-mojo.html – mac

関連する問題