2016-04-12 11 views
0

私たちのプロジェクトでは、実行時に発生するjarの競合をすべて除去したいと考えています。私たちのスタックはとても大きいので、同じ依存関係を持った同じjarファイルを持っています。ここに問題があります。それぞれの依存関係は、新しく展開された後、同じjarの異なるバージョンを持ち込み、問題を引き起こしています。jar衝突を解決する

どこから始めますか?これを解決するためのプラグインがありますか? これに関する助けや指針は、非常にappricieatedです。

+2

あなたはMVNツリーを使用することができます依存性 – cralfaro

+0

はすぐに注意を必要とする問題を解決する方法の1つです。しかし、私はプロジェクトが非常に大きいと言ったので、私は手作業でそのような依存関係をすべて掃除することはできません。 – raka

答えて

2

次のようにmaven-enforcer-pluginを使用することができます。

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

相反する依存性がある場合は、このビルドを停止します。

1

便利なツール:JHades。要約すると、それはJarの依存性地獄に役立つツールです。それ自体は、JDKを除いて、依存関係のないJarです。簡単な競合を発見し、さらに深刻な問題をデバッグするために使用できます。例:他の依存性の異なるバージョンに含まれているjarファイルを参照するdependecyを、そしてから除外:

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

は、クラスローダチェーン、瓶、重複したクラスを出力します...