Как заставить 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, и приведенный выше вариант изменит его поведение.

Другие вопросы по тегам