Плагин 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>

Проблема в том, что плагин выполняется несколько раз во время сборки:

  1. В начале сборки (во время validate фаза).
  2. когда jar:jar выполняет.
  3. После 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.

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