Как заставить Maven всегда создавать новый файл JAR?
Если все классы современныNothing to compile - all classes are up to date
"Так Maven создаст банку снова?
Как я вижу в своем журнале, эта банка больше не создается. Итак, Maven узнают, что все классы современны.
Вопрос: есть ли процесс или что-то еще, что работает на этом?
1 ответ
Плагин Maven Jar создаст банку с помощью своей jar
Цель, если ничего не существует, или пропустить ее создание, если она существует, но ничего не изменилось.
Вы можете форсировать создание банки через ее forceCreation
вариант (начиная с версии 2.2). Из официальной документации:
Требуется плагин jar для создания нового JAR, даже если кажется, что ни одно из содержимого не изменилось. По умолчанию этот плагин проверяет, существует ли выходной файл jar и входные данные не изменились. Если эти условия выполняются, плагин пропускает создание баночки. Это не работает, когда другие плагины, такие как maven-shade-plugin, настроены для пост-обработки jar. Этот плагин не может обнаружить постобработку и поэтому оставляет постобработанный jar на месте. Это может привести к сбоям, когда эти плагины не ожидают найти свой собственный вывод в качестве входных данных. Установите для этого параметра значение true, чтобы избежать этих проблем, заставляя этот плагин каждый раз воссоздавать банку.
Значение по умолчанию: false
, который объясняет поведение, которое вы ведете.
Если вы хотите принудительно использовать его всегда, вы можете добавить в свой файл pom:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<forceCreation>true</forceCreation>
</configuration>
...
</plugin>
</plugins>
</build>
...
</project>
Или просто в одной сборке, вызовите его следующим образом:
mvn package -Djar.forceCreation=true
Итак, возвращаясь к вашему вопросу:
Есть ли какой-либо процесс или другая вещь, которая работает на этом?
Ответ таков: да, над этим работает плагин Maven Jar, и приведенный выше вариант изменит его поведение.