2013-05-10 18 views
11

Yeni bir maven projesi olan maven'e taşınan eski projeler oluşturmam gerekiyor. Bu yüzdenMaven'de kardeş modüller arasında ortak bağımlılıklar bulmak için araç?

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

project 1 ve project 2 bağımlılıkları tonlarca ve onları bir sürü birbirlerine ortak olan böyle bir yapısı var. Ne merak ediyorum ve internette bulamadım, bu ortak bağımlılıkları bulabildiğim bir araç varsa, bunları ana pompasına taşıyabilir miyim? Ben

... 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> 
... 

gibi bu araca elemanları ile iki saçakları sağlarsanız examplo için

, ben çıkış

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

Böyle yapan bir aracın farkında değilim. Ancak size bir geçici çözüm önerebilirim. İki projenin aşağı bağımlılıklarını listeleyebilir ve küçük bir java kodu veya kabuk betiği kullanarak bir dize karşılaştırması yapabilirsiniz. Örneğin. mvn -o bağımlılığı: list> deps1.txt, mvn -o bağımlılığı: list> deps2.txt. Bir grep yapmak ve kopyaları kopyalamak için kesmeniz gerekebilir ve istenmeyen bir hata –

+0

Bunu bağımlılık kullanarak yapıyorum: ağaç, ancak zaten benim için bunu yapan herhangi bir araç olup olmadığını bilmek istedim. Yine de teşekkürler :) –

+1

Eclipse içindeki m2e eklentisini kullanarak pompayı bu şekilde yeniden desteklemeyi destekliyoruz. – khmarbaise

cevap

3

Bilmiyorum Tanımladığınız gibi çalışan bir araç tanımlayın, ancak basit bir çözüm var:

Geçici bir üçüncü proje yapın ve tüm bağımlılıkları A ve B'den bu pompaya kopyalayın. Böyle dependency:analyze-duplicate bağımlılık-eklentisi hedefi ile çiftleri bulmaya Daha:

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

Böyle bir şey alacak

[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 

yinelenen gerçekten çeki çoğaltmak gerekir her iki proje geliyor emin olmak için Daha önce sahip olduğu tek projeler var.

1

bunu yapmak için herhangi bir aracı bilmiyorum olmak istiyorum. mvn dependency:resolve

: .ama tüm bağımlılıklarını 1.resolving eski okul

de bunu yapabilir modülü tarafından sıralanır ve dışarı repeting..and onay modülü ile

2.List tüm Depencies: Tüm modüllerde arayabilirsiniz

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

3.then

mvn dependency:tree -Dverbose -Dincludes=commons-collections --> for example 
İlgili konular