2010-01-05 4 views
8

Я хочу запустить простую стадию установки maven команды exec. Каков самый простой способ достичь этого? (Без добавления новых плагинов) Жизненный циклЗапуск задания post maven install

ответ

13

Если вы хотите запустить эту команду как часть нормального жизненного цикла сборки, нет другого пути, кроме связывания 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.

3

The Maven по умолчанию заканчивается установить и развернуть цели - нет до и пост- версии этих целей.

Потенциальные варианты будут заключаться в следующем:

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

  • Run ехес: EXEC харизмы после установки цели в вашем МВН вызова ... например:

    MVN чистую установку Exec: EXEC -Dexec.executable = "yourcommand" -Dexec.args = "аргументы"

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

Смежные вопросы