Лишние предупреждения при использовании maven-shade-plugin - PullRequest
13 голосов
/ 16 января 2012

Я использую maven-shade-plugin для простого проекта maven, плагин успешно включает все зависимости в окончательный "затененный" 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-плагин очень красиво и просто.

1 Ответ

12 голосов
/ 13 июня 2012

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

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

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

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

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

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

...