2016-04-12 36 views
0

Projemizde, çalışma sırasında ortaya çıkabilecek tüm olası kavanoz çakışmaları kaldırmak istiyorum. Yığımız çok büyük, farklı bağımlılıklar tarafından getirilen aynı kavanoza sahibiz. İşte sorun şu ki, her bağımlılık aynı kavanozun farklı versiyonunu getiriyor ve yeni dağıtımdan sonra sorunlara neden oluyor.Kavanoz çakışmalarını temizleme

Nerden başlarım? Bunu çözmek için herhangi bir maven eklentisi var mı? Bu konuyla ilgili herhangi bir yardım veya işaretçi çok fazla kısıtlıdır. aşağıdaki gibi

+2

Eğer mvn ağacını kullanabilirsiniz Bağımlılık – cralfaro

+0

, derhal dikkat gerektiren sorunları çözmenin bir yoludur. Ama projenin çok büyük olduğunu söylediğim gibi, her türlü bağımlılığı el ile gidip temizleyemem. – raka

cevap

2

Sen maven-enforcer-plugin kullanabilirsiniz: çakışan bağımlılıkları varken

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.3.1</version> 
    <configuration> 
     <fail>true</fail> 
     <rules> 
      <dependencyConvergence/> 
     </rules> 
    </configuration> 
    <executions> 
     <execution> 
      <id>enforce-dependencies</id> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Bu yapı durduracak.

1

Kullanışlı bir araç: JHades. Özetle, Kavanoz bağımlılığı Cehennem yardımcı olan bir araçtır. Kendi başına, JDK hariç, bağımlılığı olmayan bir Jar'dır. Kolay anlaşmazlıkları tespit etmek ve daha ciddi sorunları ayıklamak için kullanılabilir. Örnek: Diğer dependecies farklı sürümleri ile dahil edilecek kavanoz görmek için bağımlılığımızı ve onları dışlamak:

new JHades() 
    .printClassLoaders() 
    .printClasspath() 
    .overlappingJarsReport() 
    .multipleClassVersionsReport() 
    .findClassByName("org.jhades.SomeServiceImpl") 

, sınıf yükleyici zinciri, kavanoz, yinelenen sınıflar yazdırır ...