Добавить mojo в пользовательский жизненный цикл, определенный другим плагином maven - PullRequest
0 голосов
/ 25 января 2010

Я использую плагин maven, который определяет тип упаковки и жизненный цикл для моих проектов. Давайте назовем эту упаковку "foo", определяемой как "foo-plugin". Я не могу контролировать этот плагин, но хочу расширить определение его жизненного цикла в своем плагине.

Я пишу другой плагин, давайте назовем его "бар-плагин". Я хочу, чтобы определенная цель моего плагина была вызвана в фазе процесса-источника проекта с упаковкой "foo". Не в любом другом случае. Я определил mojo для выполнения на этапе process-sources, но это заставляет его выполняться на этапе-source любого проекта, а не только с пакетом "foo".

/**
 * @goal bar
 * @phase process-sources
 */
public class BarMojo extends AbstractMojo

Я также пытался использовать пользовательское определение жизненного цикла для расширения существующего жизненного цикла, например:

<component-set>
  <components>
    <component>
      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
      <role-hint>foo</role-hint>
      <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
      <configuration>
        <phases>
          <process-sources>${groupId}:${artifactId}:${version}:bar</process-sources>
        </phases>
      </configuration>
    </component>
  </components>
</component-set>

Это, похоже, полностью игнорируется, даже если для элемента <extensions> в pom установлено значение true. Можно ли даже продлить жизненный цикл, определенный одним плагином, с помощью другого, и если да, то что я делаю не так?

Edit: Структура проекта Maven выглядит следующим образом: название проекта (упаковка)
mycompany-parent (pom)
- someprojecttype-parent (pom)
- - проект-1 (foo)
- - проект-2 (foo)

Я хочу добавить плагин к someprojecttype-parent, для которого для упаковки установлено значение pom. Это приводит к выполнению цели панели при создании родительского проекта. Я хочу выполнить план цели только при построении проекта-1 и проекта-2.

1 Ответ

1 голос
/ 19 мая 2010

Судя по последнему биту, звучит так, как будто вам нужно вставить плагин внутрь

<build>
    <pluginManagement>
        <plugins>

, а не просто

<build>
    <plugins>

, который должен ограничивать выполнение дочерних проектов

...