2016-11-11 37 views
2

AWS SDKを追加する既存のProject Xがありますが、何らかの理由でApache Commons httpclientの古いバージョンを使用しようとしています。Mavenがpom.xmlに指定されているより古いバージョンを取得しています

プロジェクトXは既にバージョンがなくにはhttpclientが必要です。AWS SDK v1.11.52には、依存関係としてhttpclient v4.5.2が指定されています。バージョンがなかったので、プロジェクトXのpom.xmlにバージョン4.5.2を設定しました。これは正常にコンパイルが、私はTomcatでホストされているJSPページ内のコードを使用しようとすると、私はこのエラーを取得:

Tomcatの中 libディレクトリを見ると
HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V 

、私はhttpclient V4.3用のjarがある見ます。エラーのコンストラクタがv4.3では存在しないが、v4.5.2では存在することを確認した。

私は私のクラスパスのファイルを消去し、mvn cleanを使用して確認しました、とも~/.m2を削除しようとしたが、私は、プロジェクトを再構築すると、httpclientのV4.3は、まだに引っ張られる。私はIDE、単にMavenを使用していません。私はどこにv4.3についての言及もないことを確認するためにプロジェクトをチェックしたので、なぜこれが起こっているのか分からない。

私はmvn depdency:tree -Dverboseと私の依存情報をチェックしました。ここでは、関連する部分、httpclientはどこにも言及されていないされています

[INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.2:compile 
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.3:compile (version managed from 4.4.4) 
[INFO] | +- commons-logging:commons-logging:jar:1.1.3:compile (version managed from 1.2) 
[INFO] | \- commons-codec:commons-codec:jar:1.9:compile 
... 
[INFO] | +- com.amazonaws:aws-java-sdk-core:jar:1.11.52:compile 
[INFO] | | +- (commons-logging:commons-logging:jar:1.1.3:compile - version managed from 1.2; omitted for duplicate) 
[INFO] | | +- (org.apache.httpcomponents:httpclient:jar:4.3:compile - version managed from 4.5.2; omitted for conflict with 4.5.2) 

なぜpom.xmlファイルはに引っ張られているのいずれかに記載されていないバージョンがありますか? version managedをもっと詳しく説明することができますか?最も重要なのは、は私の依存関係のバージョン番号を強制する方法があるのですか?


更新:問題は、古いバージョンが親ポンポンに含まれていたということでした。私はこれを逃して、dependency:tree出力からそれを理解することができませんでした。親のポームを更新することで問題が解決されました。誤ったアラームのために申し訳ありません。

+0

aws-java-sdk依存関係からhttpclientを除外する必要はありませんか? –

+0

私はそのオプションを知らなかった。私はちょうどそれを試み、残念ながらそれは動作しませんでした。 – polm23

+1

あなたはあなたのポンを共有するでしょう、これはテストで私のためにうまくいく、 –

答えて

3

直接の依存関係はなく、間接的な依存関係しかない場合、Mavenは最初に見つけたものを選択し、それは完全に依存関係ツリーの順序に依存します。それはだとき(確認するために:dependencyManagement一部(https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Managementを参照)に依存関係を追加するにはポンポンで

  • を直接依存関係を追加

    • :あなたはで、あなたが望む一つとバージョンを強制することができます必要な場合)Mavenは適切なものを選択します。

    サイドノート:他の問題にぶつかる場合でも、httpclientの間接的依存関係のバージョンを同様に更新することができます。

    さらに詳しく知りたい場合は、この投稿をご覧ください。 How do I tell Maven to use the latest version of a dependency?

  • 関連する問題