15

単純なmavenプロジェクトにmaven-shade-pluginを使用しています。プラグインは、すべての依存関係を最終的な「シェーディングされた」jarに正常に含めます。このプロセスは毎回うまく機能し、必要なものを正確に生成します。

「最初の」時間(後clean)に実行すると、プラグインは静かになり、出力はほとんど生成されません。ただし、(前回のビルドからのを使用せずに)再実行するcleanと、このような警告メッセージが多数表示されます。

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

これは警告メッセージのみであり、最終的なアーティファクトは正常に機能します。

clean私の質問は単純です。最初に実行しなくても、これらの警告メッセージを安全に回避または抑制するにはどうすればよいですか?


注:考えられる解決策は、 maven-assembly-pluginに移動することですが、 maven-shade-pluginの構成は非常に素晴らしく、単純なので、移動したくないと思います。

4

1 に答える 1

17

これは、ファイルをすでにシェーディングされたjarにシェーディングしているためです。

クリーンアップ後に初めてパッケージを実行すると、jarが作成されます。2回目に実行すると、jarがすでに存在するため、気になりません。

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

jarプラグインを構成することで、Mavenに毎回jarを作成させることができます。

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

そして、これは私のために働きます。それか、単にクリーンインストールを実行します

于 2012-06-13T12:48:36.537 に答える