2012-02-02 23 views
12

私はMaven依存関係の除外に関する問い合わせを受けています。私は3.1.0に春の3.0.6からの移行を達成しようとしています次Maven依存関係を除外する

<dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>${spring-security.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.security</groupId> 
       <artifactId>spring-security-web</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>3.1.0.RELEASE</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-web</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>3.1.0.RELEASE</version> 
    </dependency> 
    <dependency> 

を考えてみましょう。 Springセキュリティ3.1.0はSpringセキュリティWebバージョン3.0.6に依存し、Spring Web 3.0.6に依存していました。私はそれをすべて3.1.0に持っていく必要があります。だから私は春のセキュリティからspring-security-webを除外し、spring-security-web 3.1.0の別の依存関係を持っています。これはspring-web 3.0.6のバージョンを除き、別のspring-web 3.1.0バージョンを提供します。この仕事ははるかに簡単なアプローチがあると感じています。私は春のセキュリティの下で春のWebの除外を試みましたが、うまくいきませんでした。助けてください 。

答えて

18

dependency management mechanismを利用できます。

spring-security-webおよびspring-web用のpomのセクションのエントリを、目的の3.1.0バージョンセットのエントリを作成すると、アーティファクトの管理バージョンは、推移的依存ツリーで指定されているものよりも優先されます。

実際にコードを保存するかどうかはわかりませんが、IMOのクリーナーソリューションです。

+0

これでこれを行う必要があります。私は、グローバル除外がより簡単になることを願っています。 –

8

グローバル除外look like they're being worked on、それまで... Sonatype maven reference(ページの一番下)から

:トップレベルのPOMで

依存関係管理は、ちょうど 依存関係を定義すると異なっています広く共有されている親POMにまず、 すべての依存関係が継承されます。 mysql-connector-javaが最上位の親プロジェクトの の依存関係としてリストされていた場合、 の各プロジェクトはこの依存関係への参照を持ちます。 の代わりに不要な依存関係を追加する場合は、 を使用して、 子に継承されている依存関係を追加せずに、依存関係の管理を統合し集中管理することができます。つまり、dependencyManagement要素は、 という数値を指定せずにプロジェクトの下位にある の依存関係を宣言できる環境変数に相当する です。一例として、

<dependencies> 
    <dependency> 
     <groupId>commons-httpclient</groupId> 
     <artifactId>commons-httpclient</artifactId> 
     <version>3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>3.0.5.RELEASE</version> 
    </dependency> 
    </dependencies> 
    <dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>commons-httpclient</groupId> 
     <artifactId>commons-httpclient</artifactId> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 

それは全体的なコードはそれほど冗長ことはありませんが、それは数えるところ、それはそれほど冗長作るん。それでもあまり冗長でない場合は、follow these tipsもSonatypeリファレンスから取得できます。

+0

ありがとうございます。グローバル除外事項と参照の+1。 –

関連する問題