2012-01-16 6 views
13

単純なmavenプロジェクトでmaven-shade-pluginを使用していますが、プラグインはすべての依存関係を最終的な "陰影付き"このプロセスは毎回うまく動作し、必要なものを正確に生成します。maven-shade-pluginを使用したときの余計な警告

「最初の」時間(cleanの後)を実行すると、プラグインは静かで出力がほとんど生成されません。しかし、再実行すると(最後のビルドからcleanを除いて)、このような警告メッセージがたくさんあります。

[WARNING] We have a duplicate package/a/b/foo.class 
[WARNING] We have a duplicate package/c/d/bar.class 

これは警告メッセージであり、最終的な成果物は正常に機能します。

私の質問は簡単です:まずcleanを実行しなくても、これらの警告メッセージを安全に回避したり抑制したりできますか?


注:は可能な解決策はのmaven-組立・プラグインに移動するだろうが、私はのmaven-シェードプラグインのための設定は非常に素晴らしく、簡単ですしていないので、希望。

+1

報告された重複がすべての依存関係クラスであると仮定します。そのような場合は、最初にいくつかのフォルダに展開される可能性が高いので、パッケージ段階の前後にそれらのフォルダのクリーンなステップを追加することができます(ビルド間にクラスが必要かどうかによって異なります)。 – Thomas

+0

私は上記と同じ質問をしています...警告を抑制する方法。私の場合は、私がコントロールできない多数のSpringパッケージのjarファイルからの依存関係を含めています。つまり、以前は "クリーン"できません。 –

+0

これはまさに私の問題です! [Oh dear!](http://xkcd.com/979/) – plasma147

答えて

10

これは、ファイルが既に影付きのjarファイルに陰影付けされているためです。

初めてパッケージを実行すると、きれいになった後にパッケージが作成されます。 2回目に実行すると、すでにjarファイルが存在するので気にしません。

シェードプラグインの観点からは、すでにシェードされていることを知らないので、クラスを再度追加しようとしています。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <forceCreation>true</forceCreation> 
    </configuration> 
</plugin> 

をそして、これは私の作品:

我々はジャープラグインを設定することにより、ジャー毎回作成するために、Mavenを強制することができます。どちらか、またはきれいにインストールしてください

+0

このチップをおかげで、迷惑ですが、それは動作します。 –

+0

ありがとうございます。プラグインに '元の' jarを使う別の方法がありますか?私は 'maven-jar-plugin'と' maven-shade-plugin'の間のダイナミックスを理解していません –

関連する問題