Как запустить конкретную цель с определенной конфигурацией в плагине Maven, когда у меня есть несколько конфигураций для этой цели - PullRequest
25 голосов
/ 10 августа 2010

См. Конфигурацию плагина из pom.xml ниже.

Я могу сделать:

mvn myplugin:myGoal

, который запускает myGoal (оба выполнения, я полагаю), но я хочубыть в состоянии выбрать либо первое, либо второе выполнение независимо.

Я знаю, что могу добавить идентификатор к элементу выполнения, но как мне обратиться к этому идентификатору в командной строке.Я хотел бы перейти к тому, что делает то, что делает эта воображаемая команда:

mvn myplugin:myGoal --executionId=1

Возможно ли это, или я поступаю неправильно?

        <plugin>
            <groupId>org.myplugin</groupId>
            <artifactId>myplugin-maven-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>myGoal</goal>
                    </goals>
                    <configuration>
                        <myParam>cats</myParam>
                    </configuration>
                </execution>
                <execution>
                    <goals>
                        <goal>myGoal</goal>
                    </goals>
                    <configuration>
                        <myParam>dogs</myParam>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Ответы [ 4 ]

25 голосов
/ 10 ноября 2015

Выполнение нескольких целей из CLI теперь поддерживается в Maven 3.3.1 +

mvn exec:java@first-cli
mvn exec:java@second-cli

Где first-cli / second-cli - идентификаторы выполнения.

http://blog.soebes.de/blog/2015/03/17/apache-maven-3-dot-3-1-features/

20 голосов
/ 10 августа 2010

Я могу сделать mvn myplugin:myGoalWhich Запускает myGoal (я полагаю, оба выполнения)

Ни одно из них (при условии, что они имели уникальный id).Выполнения привязаны к фазе, вам нужно запустить данную фазу, чтобы вызвать их.

Я знаю, что могу добавить идентификатор к элементу выполнения, но как мне обратиться к этому идентификатору в команде?линия.

Не поддерживается.Для плагинов, вызываемых в CLI, возможно определить неглобальную конфигурацию в POM, используя специальную default-cli executionId, например:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <executions>
    <execution>
      <id>default-cli</id>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
          <descriptorRef>project</descriptorRef>
        </descriptorRefs>
      </configuration>
    </execution>
  </executions>
</plugin>

Возможно ли это, или я поступаю неправильно?

Нет, невозможно.Либо передайте параметры в командной строке, либо используйте профили (с указанным выше исполнением по умолчанию или без него).

Ссылки

7 голосов
/ 17 августа 2016

Эй, вы можете создать свою цель так: -

org.myplugin:myplugin-maven-plugin:1.1.1:myGoal  i.e
<groupId>:<artifactId>:<version>:<yourgoal>

Это работает в моем случае ...

3 голосов
/ 10 августа 2010

Предположение, которое вы сделали, если вы звоните

  mvn myplugin:myGoal

Но проблема в том, что вы получите сообщение об ошибке, потому что у выполнения нет уникальных идентификаторов (оба в этом случае имеют одинаковые).

Вы можете достичь того, что вам нравится делать через профили, которые вы можете активировать через mvn -PXYZ и mvn -PABC

...