2013-05-10 8 views
11

私は新しいプロジェクトを作成しなければなりません。古いプロジェクトは、mavenに移行されました。だから私はMavenの兄弟モジュール間の共通の依存関係を見つけるためのツール?

parent 
| 
\-- project 1 
| 
\-- project 2 

project 1project 2は、依存関係のトンを持っており、それらの多くは、お互いに共通している。このような構造を得ました。私が疑問に思うのは、私はインターネットで見つけることができませんでした私はこれらの共通の依存関係を見つけることができるツールがある場合、私はそれらを親のpomに移行することができますか? examploについては

私は

... PROJECT 1 POM 
<dependencies> 
    <dependency> 
     <groupId>com.foo</groupId> 
     <artifcatId>A</artifactId> 
     <version>1.0.0</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.foo</groupId> 
     <artifcatId>B</artifactId> 
     <version>1.0.0</artifactId> 
    </dependency> 
</dependencies> 
... 

.. PROJECT 2 POM 
<dependencies> 
    <dependency> 
     <groupId>com.foo</groupId> 
     <artifcatId>B</artifactId> 
     <version>1.0.0</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.foo</groupId> 
     <artifcatId>C</artifactId> 
     <version>1.0.0</artifactId> 
    </dependency> 
</dependencies> 
... 

のような要素をこのツールには2つのPOMSを提供する場合、私はそれを行うための任意のツールを知らない出力が

.. OUTPUT FROM COMPARING BOTH 
<dependencies> 
    <dependency> 
     <groupId>com.foo</groupId> 
     <artifcatId>B</artifactId> 
     <version>1.0.0</artifactId> 
    </dependency> 
</dependencies> 
... 
+1

私はこのようなツールを認識していません。しかし、私はあなたに回避策を提案することができます。 2つのプロジェクトの依存関係を一覧表示し、小さなJavaコードまたはシェルスクリプトを使用して文字列を比較します。例えば。 mvn -o依存関係:list> deps1.txt、 mvn -o依存関係:list> deps2.txt。 grepを実行して不要な冗長をフィルタリングする必要があるかもしれません –

+0

私はこれをdependency:treeを使って行っていましたが、既にそれを行うツールがあるかどうかを知りたいと思っていました。とにかくありがとう:) –

+1

Eclipse内でm2eプラグインを使用すると、そのようにしてポムのリファクタリングがサポートされます。 – khmarbaise

答えて

3

に探すことができ

mvn -o dependency:list | grep ":.*:.*:.*" | cut -d] -f2- | sed 's/:[a-z]*$//g' | sort -u 

3.thenあなたが説明したように動作するツールを知っているが、単純な回避策がある:

一時的な3番目のプロジェクトを作成し、AとBのすべての依存関係をこのpomにコピーする。このようなdependency:analyze-duplicate依存関係のプラグインゴールで重複を見つけることを試みるより:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:analyze-duplicate 

あなたはこのような何かを得るでしょう

[INFO] ------------------------------------------------------------------------ 
[INFO] Building foobar 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:analyze-duplicate (default-cli) @ foobar --- 
[INFO] List of duplicate dependencies defined in <dependencies/> in your pom.xml: 
     o junit:junit:jar 

は、重複が本当にあなたがチェックを複製する必要があり、両方のプロジェクトから来ていることを確認するにはそこにある単一のプロジェクトは前に所有しています。

1

になりたいです。しかし、あなたは古い学校でそれをすることができます

1.すべての依存関係の確認:mvn dependency:resolve

2.Listモジュールによってソートされ、うちrepeting..andチェックモジュールを持つすべてのdepencies:あなたは私がいないすべてのモジュール

mvn dependency:tree -Dverbose -Dincludes=commons-collections --> for example 
関連する問題