Плагин Maven выполняется несколько раз во время сборки - PullRequest
5 голосов
/ 07 ноября 2011

У меня есть проект 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>. Есть ли способ заставить его работать только в начале сборки?

1 Ответ

3 голосов
/ 08 ноября 2011

Причина, по которой он выполняется несколько раз, в том, что один из ваших плагинов выполняет другой жизненный цикл как часть своего mojo.

source:jar определенно делает это, как указано в документации .

Вызывает выполнение генерации-источника фазы жизненного цикла до выполняет себя.

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

В случае создания jar-кода источника, как правило, вам не нужен другой жизненный цикл, и авторы плагинов распознали это, реализовав jar-no-fork mojo .

Вы можете заменить его по умолчанию jar mojo, выполнив шаги, описанные здесь -> http://maven.apache.org/plugins/maven-source-plugin/usage.html

...