2016-07-07 20 views
0

Webプロジェクトで複数のSpringベースのMavenリポジトリを使用しています。子POMで使用される依存関係に問題があります。このようなMaven 3を使用して子依存関係を親依存関係よりも優先させない

<dependencyManagement> 
    <dependencies> 

     <!-- SPRING -->    
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-framework-bom</artifactId> 
      <version>4.3.0.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 

     <!-- SPRING SECURITY --> 

     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-bom</artifactId> 
      <version>4.1.0.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 

     <!-- SPRING BOOT --> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-dependencies</artifactId> 
      <version>1.3.5.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 

     <!-- SPRING WS --> 

     <dependency> 
      <groupId>org.springframework.ws</groupId> 
      <artifactId>spring-ws-core</artifactId> 
      <version>2.2.3.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.ws</groupId> 
      <artifactId>spring-ws-security</artifactId> 
      <version>2.2.3.RELEASE</version> 
     </dependency> 
     <!-- OTHER DEPENDENCIES OMITTED --> 
    </dependencies> 
</dependencyManagement> 

と子POM:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.ws</groupId> 
     <artifactId>spring-ws-security</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-core</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
    </dependency> 
    <!-- OTHER DEPENDENCIES OMITTED --> 
</dependencies> 

限りMavenの除外の私の理解が行くように、これはのオーバーライドを避けるべき

は、私はこのような親POMを持っています親のPOMバージョンですが、spring-ws-securityはメソッドが変更されたspring-core(4.0.9)の下位バージョンに依存しているため、NoSuchMethodErrorのためにTomcatローカルサーバーにアプリケーションをデプロイできません例外は、アプリケーションが実際に配備されたときに起動されることもできます古いスプリングコアバージョンへの依存は残っています。

このような依存関係の上書きを避けるにはどうすればよいですか? または両方の依存関係を使用するいくつかの方法があります(これまでの検索では安全ではありません)。

リンクが既に訪問した:わずか数は言及

Similar problem, but from child to parent

Exclusions example

を、私も他の人を訪問しましたが、リンクを忘れてました。

編集:spring-ws依存関係は、親POMで定義した4.3.0バージョン(使用する必要があるバージョン)を上書きしているSpring 4.0.9を使用します。

+- org.springframework.ws:spring-ws-core:jar:2.2.3.RELEASE:compile 
[INFO] | | | +- org.springframework:spring-oxm:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE) 
[INFO] | | | +- org.springframework:spring-web:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE) 
[INFO] | | | \- org.springframework:spring-webmvc:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE) 
+0

入手しているライブラリのバージョンと入手したいバージョンを記載してください。 'mvn dependency:tree'を実行すると、依存関係をリストすることができます。 –

+0

私は間違った依存関係の一部をリストアップしています@AntonKoscejev –

+0

Sundarajの答えに対するあなたのコメントに基づいて、私はあなたが達成しようとしていることが正確ではないと思います。これらのSpring *アーティファクトをバージョン4.3または4.0にしますか?あなたはあなたの親のために4.3を手に入れていますが、子供のプロジェクトでそれを変更したくないと言っているので、4.3を手に入れたいですか?しかし、spring-ws 2.2はspring 4とバイナリ互換性がありません。3と古いバージョンが必要です。だから、あなたは子供の中で4.0を使う必要があります(親で定義されているか、子でオーバーライドされています)か、Spring 4.3とバイナリ互換性のあるバージョンのspring-wsが必要です。正確に何を手助けしたいですか? –

答えて

0

あなたは、単に以下のように、バージョン4.0.9を言及することにより、あなたの子供のポンポンに明示的なオーバーライドを行うことができます。いずれの場合

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.0.9</version> 
</dependency> 

は、以下に引用したように、このバージョンでは、子供の子POMに影響を与えます。

それが特定のバージョンで現在POMに 宣言されている場合、バージョンバージョン

を強制

は常にを表彰されます - しかし、それは は、このことに留意すべきですは、他のポムの下流のにも影響します。 は、過渡的な依存関係を使用することに依存します。

+0

クイック回答Sundararajのおかげで、問題は私が子POM内のバージョンをオーバーライドしたくないということです。基本的に私が望むのは、オーバーライドされないバージョンです。それが依存バージョンversion-wsを除外した理由ですつかいます。 –