Выполнение задачи отправляет установку знатока

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

8
задан Priyank 5 January 2010 в 10:18
поделиться

2 ответа

Если вы хотите запустить эту команду как часть обычного жизненного цикла сборки, то нет другого способа, кроме как связать цель exec на фазе install:

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.1.1</version>
      <executions>
        <execution>
          <id>my-exec</id>
          <phase>install</phase>
          <goals>
            <goal>exec</goal>
          </goals>
          <inherited>false</inherited>
        </execution>
      </executions>
      <configuration>
        <executable>COMMAND</executable>
      </configuration>
    </plugin>
  </plugins>
</build>

Я провел простой тест, используя приведенную выше конфигурацию (используя ls в качестве "COMMAND") со свежесозданным проектом maven и запустив mvn install, получим следующий результат:

$ mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building maven-exec-testcase
[INFO]    task-segment: [install]
[INFO] ------------------------------------------------------------------------
...
[INFO] [install:install {execution: default-install}]
[INFO] Installing /home/pascal/Projects/maven-exec-testcase/target/maven-exec-testcase-1.0-SNAPSHOT.jar to /home/pascal/.m2/repository/com/mycompany/app/maven-exec-testcase/1.0-SNAPSHOT/maven-exec-testcase-1.0-SNAPSHOT.jar
[INFO] [exec:exec {execution: my-exec}]
[INFO] pom.xml
[INFO] src
[INFO] target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12 seconds
[INFO] Finished at: Tue Jan 05 19:26:04 CET 2010
[INFO] Final Memory: 11M/75M
[INFO] ------------------------------------------------------------------------

Как видим, команда выполняется в конце фазы install (после копирования артефакта в локальное хранилище).

И если вы действительно не хотите добавлять фрагмент в ваш pom, то вам придется явно вызвать exec:exec после install в командной строке, как предложил whaley.

16
ответ дан 5 December 2019 в 08:24
поделиться

Жизненный цикл по умолчанию заканчивается с целями install и deployment - до и после установки этих целей не существует.

Потенциальными вариантами могут быть:

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

  • Запустите mosjo exec:exec после цели установки в вызове mvn... например:

    mvn clean install exec:exec -Dexec.executable="yourcommand" -Dexec.args="arguments"

  • Если у вас многомодульный проект, создайте другой модуль в конце вашего <модуля> и привяжите exec:exec к любой из обычных целей в этом модуле. Это заставит этот конкретный модуль запуститься последним в предположении, что другие критерии , на которые смотрит реактор, не выполнены. Общая стратегия, которую я использую с проектами maven, над которыми я работаю, это "в случае сомнений, создайте другой модуль".

4
ответ дан 5 December 2019 в 08:24
поделиться
Другие вопросы по тегам:

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