Как Вы вынуждаете Mojo знатока выполняться только однажды в конце сборки?

Если вы хотите добавить цитату в начало и конец, попробуйте

=""""&E2&""""
10
задан Rich Seller 30 July 2009 в 21:02
поделиться

4 ответа

Я думаю, что Вы могли бы получить то, в чем Вы нуждаетесь, если Вы используете тег @aggregator и связываете Ваше заклинание с одной из следующих фаз жизненного цикла:

  • готовить-пакет
  • пакет
  • прединтеграционный тест
  • интеграционный тест
  • постинтеграционный тест
  • проверить
  • установка
  • развернуться
1
ответ дан 3 December 2019 в 22:40
поделиться

Лучшее решение, которое я нашел для этого:

/**
 * The projects in the reactor.
 *
 * @parameter expression="${reactorProjects}"
 * @readonly
 */
private List reactorProjects;

public void execute() throws MojoExecutionException {

    // only execute this mojo once, on the very last project in the reactor
    final int size = reactorProjects.size();
    MavenProject lastProject = (MavenProject) reactorProjects.get(size - 1);
    if (lastProject != getProject()) {
        return;
    }
   // do work
   ...
}

Это, кажется, работает над маленькими иерархиями сборки, с которыми я протестировал.

9
ответ дан 3 December 2019 в 22:40
поделиться

Обычно, это - вопрос конфигурации. Вам, возможно, придется установить проект только для заклинания и сделать его зависящим от всех других проектов. Или Вы могли вызвать один из дочерних проектов быть последними путем создания этого зависящим от всех других детей.

-1
ответ дан 3 December 2019 в 22:40
поделиться

В блоге Sonatype описано, как это сделать. Последний запускаемый проект будет корневым, поскольку он будет содержать ссылки на остальные модули. Поэтому вам нужен тест в вашем mojo, чтобы проверить, совпадает ли каталог текущего проекта с каталогом, из которого был запущен Maven:

boolean result = mavenSession.getExecutionRootDirectory().equalsIgnoreCase(basedir.toString());

В указанной записи есть довольно подробный пример того, как использовать это в вашем mojo.

2
ответ дан 3 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: