Плагин Maven выполняется несколько раз во время сборки
У меня есть проект Maven с несколькими перекрывающимися профилями. Я хочу отображать активные профили в начале каждой сборки. Поэтому я положил следующее в pom.xml <build>
раздел:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>display-active-profiles-at-start-of-build</id>
<phase>validate</phase>
<goals>
<goal>active-profiles</goal>
</goals>
</execution>
</executions>
</plugin>
Проблема в том, что плагин выполняется несколько раз во время сборки:
- В начале сборки (во время
validate
фаза). - когда
jar:jar
выполняет. - После
source:jar
/ в течениеpre-integration-test
(?), когда начинается Причал.
Аналогичные результаты при указании <phase>initialize</phase>
, Есть ли способ заставить его работать только в начале сборки?
2 ответа
Причина, по которой он выполняется несколько раз, в том, что один из ваших плагинов выполняет другой жизненный цикл как часть своего mojo.
source:jar
определенно делает это, как указано в его документации.
Вызывает выполнение фазы генератора жизненных циклов перед выполнением самого себя.
jar:jar
обычно нет, но может случиться так, что у вас есть другой плагин, который раскручивает другой жизненный цикл.
В случае генерации исходного jar, как правило, вам не нужен другой жизненный цикл, и авторы плагинов распознали это, реализовав jar-no-fork
моджо
Вы можете заменить его по умолчанию jar
mojo, следуя шагам, описанным здесь -> http://maven.apache.org/plugins/maven-source-plugin/usage.html
У меня была похожая проблема на автоматизированном бамбуковом конвейере. Я решил это, установив конкретную версию плагина maven-source в моем pom.xml.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
</plugin>
Корневая причина была связана с моей версией Java (Java 8). Из-за отсутствия определения/версии плагина, очевидно, maven автоматически выберет для использования несовместимый плагин maven-source.