2016-03-29 8 views
1

Maven Shadeプラグインを使用してuber-jarをビルドする際に、一連のアーティファクトを除外しようとしています。以下は、私はこのために使用していた構成されます。バージョン情報なしでパッケージを除くMaven Shadeプラグインでアーティファクトを除外することが期待通りに機能していません

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.4.3</version> 
      <configuration> 
       <createDependencyReducedPom>true</createDependencyReducedPom> 
       <artifactSet> 
        <excludes> 
         <exclude>com.fasterxml.jackson.core:jackson-core:jar:2.4.5</exclude> 
        </excludes> 
       </artifactSet> 
... 

は動作します:

    <exclude>com.fasterxml.jackson.core:jackson-core</exclude> 

しかしないアーティファクトの異なるバージョンがありますので、残念ながらそれはオプションではありません含まれる必要があります。

答えて

0

あなたは使用しているjacksonのバージョンを定義する必要があると思います。

異なるバージョンで同じ依存関係がある場合は(悪いことに推移するかもしれません)、明らかにそれは悪い習慣です。この場合、プロジェクトでこのライブラリのどのバージョンが終了するかわからないことがあります。依存関係の順序をxmlで置き換えることができ、結果は異なります。いいですね、そう?

だから、あなたが指定するために必要なもの - あなたのdependencyManagementセクションでジャクソンの正確なバージョンを:

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
... 

これは、あなたの案件にのみ特定のバージョンを持っていることを保証します、そして、あなたが特定のバージョンを除外する必要はありません。

希望は、これは確かにここに解決策である依存関係の管理を使用して特定され、

+0

おかげイゴールに役立ちます。 Maven Shadeのプラグインにはまだバグがありますが(ドキュメントの明瞭性が欠けています)、回避策があるので、それは世界の終わりではないと思います。 –

関連する問題