2016-10-20 13 views
1

2つのサードパーティ製ライブラリを使用するプロジェクトがあります。これらの2つはどちらもorg.eclipse.jettyを使用していますが、まったく別のバージョンです。ツリーは次のようなものです:Maven、互換性のないバージョンのlibを使用しているサードパーティー2人

[INFO] +- com.some.package:my-core-lib:jar:1.0-SNAPSHOT:compile 
[INFO] | \- org.apache.samza:samza-core_2.10:jar:0.9.1:compile 
[INFO] |  \- org.eclipse.jetty:jetty-webapp:jar:8.1.8.v20121106:compile 
[INFO] |  +- org.eclipse.jetty:jetty-xml:jar:8.1.8.v20121106:compile 
[INFO] |  | \- org.eclipse.jetty:jetty-util:jar:8.1.8.v20121106:compile 
[INFO] |  \- org.eclipse.jetty:jetty-servlet:jar:8.1.8.v20121106:compile 
[INFO] |   \- org.eclipse.jetty:jetty-security:jar:8.1.8.v20121106:compile 
[INFO] |    \- (org.eclipse.jetty:jetty-server:jar:8.1.8.v20121106:compile - omitted for conflict with 9.2.18.v20160721) 
[INFO] \- come:third-party-two:jar:2.0.3:compile 
[INFO] +- org.eclipse.jetty.websocket:websocket-client:jar:9.2.18.v20160721:compile 
[INFO] | +- org.eclipse.jetty:jetty-io:jar:9.2.18.v20160721:compile 
[INFO] | \- org.eclipse.jetty.websocket:websocket-common:jar:9.2.18.v20160721:compile 
[INFO] |  \- (org.eclipse.jetty:jetty-io:jar:9.2.18.v20160721:compile - omitted for duplicate) 
[INFO] +- org.eclipse.jetty:jetty-server:jar:9.2.18.v20160721:compile 
[INFO] | +- org.eclipse.jetty:jetty-http:jar:9.2.18.v20160721:compile 
[INFO] | \- (org.eclipse.jetty:jetty-io:jar:9.2.18.v20160721:compile - omitted for duplicate) 
[INFO] \- org.eclipse.jetty.websocket:websocket-server:jar:9.2.18.v20160721:compile 
[INFO]  \- (org.eclipse.jetty:jetty-http:jar:9.2.18.v20160721:compile - omitted for duplicate) 

私はこれらの2つの当事者に依存性を変更するように求めることはできません。私は彼らに正しいバージョンを使用させる方法がありますか? ありがとう!

+1

同じアーティファクトの2つのバージョンに応じて[Mavenプロジェクト]の可能な複製(http://stackoverflow.com/questions/27147660/maven-project-depending-on-two-versions-of-the-same-artifact ) – Joe

答えて

0

通常、Mavenでは特定の依存関係のバージョンを1つだけ持つことができます。だからまず第一に、新しいバージョンから始めて、さまざまなバージョンのjettyでプログラムをコンパイルしてテストし、すべてのバージョンに対応しているかどうかを調べるべきです。これを行うには、dependencyManagementセクションにバージョンを設定します。

でない場合、は互換性のあるバージョンを見つけると問題になります。いくつかのトリックで両方のjarをロードしようとすることもできますが、同じ名前のクラス(可能性が高いクラス)があれば、クラスローダはそのうちの1つだけをロードできます。クラス名の変更にはいくつかのツールがあるかもしれませんが、これは非常に乱雑になることがあります。

関連する問題