Неверные предупреждения при использовании maven-shade-plugin

Я использую maven-shade-plugin для простого проекта maven, плагин успешно включает все зависимости в финальную "заштрихованную" банку. Этот процесс хорошо работает каждый раз и дает именно то, что мне нужно.

При запуске "первого" времени (после clean) плагин является тихим и производит очень малое количество выходных данных. Однако при повторном запуске (без clean из последней сборки) есть много предупреждающих сообщений, таких как это;

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

Это только предупреждающие сообщения, и последний артефакт работает нормально.

Мой вопрос прост: как я могу безопасно обходить или подавлять эти предупреждающие сообщения, не запуская сначала clean?


note: Возможным решением было бы перейти к плагину maven-assembly-plugin, но я бы предпочел не делать этого, потому что конфигурация для maven-shade-plugin очень приятная и простая.

Ответ 1

Это потому, что он затеняет файлы в уже заштрихованную банку.

В первый раз, когда вы запускаете пакет после очистки, он создает банку. Во второй раз, когда вы запускаете его, он не беспокоится о том, что банка уже существует.

С точки зрения плагинов оттенков он не знает, что это уже затенено, поэтому оно просто пытается добавить классы снова.

Мы можем заставить maven создавать банку каждый раз, настраивая плагин jar:

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

И это работает для меня. Либо это, либо просто сделать чистую установку