Как выполнить выполнение плагина maven прямо из командной строки?


97

У меня есть плагин (antrun) с настроенным исполнением, который имеет идентификатор и не привязан к какой-либо фазе. Могу ли я выполнить это выполнение прямо из командной строки?

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <id>my-execution</id>
      ...
    </execution>
  </executions>
</plugin>

Запустите его примерно так:

mvn my-execution

или по крайней мере

mvn magicplugin:execute -DexecutionId=my-execution

Ответы:


133

Эта функция была реализована как MNG-5768 и доступна в Maven 3.3.1.

Изменения будут:

расширить синтаксис прямого вызова плагина, чтобы разрешить необязательный параметр @ execution-id, например org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executionId.

Итак, в вашем случае:

mvn antrun:run

использует default-cliидентификатор выполнения и:

mvn antrun:run@my-execution

использует выполнение, настроенное в вашем pom.


1
Из идентификатора артефакта «maven-antrun-plugin» как мы узнаем, что следует использовать именно «antrun» mvn antrun:run?
mks-d

1
@ mks-d узнайте, pluginGroupsпочему на него org.apache.maven.plugins:maven-antrun-pluginможно ссылаться antrun.
Джо

1
@Joe, спасибо, поверх групп плагинов , по-видимому, также есть механизм разрешения префиксов плагинов ...
mks-d

53

Самый простой способ запустить плагин maven - указать цель плагина прямо в командной строке.

mvn groupId:artifactId:version:goal

Дополнительная информация: Руководство по разработке плагинов Maven


1
Но как я могу запустить выполнение именно "default-cli"? Если в определении плагина есть несколько исполнений.
Антон Балашов

Я боролся за запуск служебного плагина Spring Boot Jasypt, и по какой-то причине единственный способ заставить его распознать Maven - это следовать приведенному выше совету. Просто указать цель напрямую ( mvn jasypt:encrypt ...) было недостаточно. Спасибо @ dimitri-dewaele.
Майк

15

То, что вы ищете, записано в Default + Plugin + Execution + ID, но, насколько мне известно, в настоящее время не поддерживается. Однако, согласно комментариям MNG-3401 (прочтите их до конца):

для mojos, вызываемых непосредственно из командной строки, вы можете предоставить конфигурацию из POM с помощью ExecutionId: 'default-cli' следующим образом:

<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>

Это должно работать в Maven 2.2.0 и 3.x.

Может, тебе этого хватит.


это было не совсем то событие вопроса, если ваш ответ правильный;).
Тони Чемит
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.