2016-10-03 9 views
3

これがMavenのサポートであるかどうかはわかりません。私が得ることができるどんな助けにも感謝します。子ポムは、親ポンで定義された依存関係の除外を継承できますか?

私は、依存関係と除外を定義する親のpomを持っています。私は、親のポンポンを変更することはできません。

<dependency> 
    <groupId>foo</groupId> 
    <artifactId>bar</artifactId> 
    <version>1.0</version> 
    <exclusions> 
     <!-- this exclusion needs to be inherited by all children --> 
     <exclusion> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-config-server</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

は、その後、子ポンポンで、私が親で、同じ依存関係から異なる依存性を排除する必要があります。そう

<dependency> 
    <groupId>foo</groupId> 
    <artifactId>bar</artifactId> 
    <version>1.0</version> 
    <exclusions> 
     <!-- this exclusion is just for the child --> 
     <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

しかし、私はそれを行う場合、子供は除外SLF4Jジャー(正しく)を持つことになりますが、私は親の除外を言い換えるならばしない限り、それは、除外春クラウド-config設定 - サーバーの瓶を持っていないようなその依存関係の子宣言で。

私はちょうどそれをコピーすることができたが、それは面倒です、そして、私は親に子供の排除をプッシュするのは簡単だろうが、それから他のすべての子供にその排除を強制するでしょう。

親と子で同じ依存関係が異なって宣言されている場合、Mavenは依存関係の除外情報をマージする必要があります。

これは可能ですか?あなたの子供のポンポンで

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>foo</groupId> 
      <artifactId>bar</artifactId> 
      <version>1.0</version> 
      <exclusions> 
       <!-- this exclusion needs to be inherited by all children --> 
       <exclusion> 
        <groupId>org.springframework.cloud</groupId> 
        <artifactId>spring-cloud-config-server</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

:あなたの親のポンポンで

+0

は、これは正しく、親にdependencyManagementを使用して処理することができますが、あなたが親を変更することはできませんと述べました。実際にslf4j-apiを使用する代わりに、slf4jを使用するだけで、実際の実装をどのように使うべきかを決めることができます。 – khmarbaise

+0

作業。私はそれを変更することはできませんが、本当に私は親にlog4j2を課すことはできません。親を変更して介入を少なくすることができるかもしれません。私はそれを試してみましょう。 –

+0

dependencyManagementでどのように動作するかを明確にすることはできますか?依存関係の管理セクション内に除外を置くと、それが伝播すると言っていますか? –

答えて

3

<dependencies> 
    <dependency> 
     <groupId>foo</groupId> 
     <artifactId>bar</artifactId> 
     <exclusions> 
      <!-- this exclusion is just for the child --> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
</dependencies> 
関連する問題