Executando um pós tarefa Maven instalar
Pergunta
Eu quero correr um posto de comando exec simples Maven instalar fase. Qual é a maneira mais simples possível para conseguir isso? (Sem adição de novos plugins)
Solução
Se você quiser executar este comando como parte do ciclo de vida de construção normal, não há outra maneira do que a ligação a meta exec
na fase 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>
Eu fiz um teste simples utilizando a configuração acima (usando ls
como "comando") com um projeto Maven recém-criado e funcionando mvn install
produz o seguinte resultado:
$ 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] ------------------------------------------------------------------------
Como podemos ver, o comando é executado no final da fase install
(após a cópia do artefato ao repositório local).
E se você realmente não quiser adicionar o trecho para o seu pom, então você vai ter que exec:exec
explicitamente chamada após install
na linha de comando como sugerido por Whaley.
Outras dicas
As extremidades do ciclo de vida maven padrão com o instalar e deploy objetivos -. Não existe uma versão pré e pós dessas metas
opções potenciais seria:
-
Bind o exec: exec mojo para com a fase de implantação. Eu adverti-lo contra essa ideia como a fase de implantação é realmente significou para implantar artefatos para um repositório remoto Maven.
-
Execute o exec: mojo exec após o gol instalar em sua invocação mvn ... por exemplo:.
mvn clean install exec: exec -Dexec.executable = "yourcommand" -Dexec.args = "argumentos"
-
Se você tem um projeto multi-módulo, criar outro módulo no final da sua
e se ligam exec: exec a qualquer um dos objetivos habituais dentro desse módulo. Isto irá forçar este módulo específico para executar última assumindo outros href="http://maven.apache.org/guides/mini/guide-multiple-modules.html" critérios os olhares reator a não for cumprida. A I empregam estratégia comum com projetos Maven eu trabalho é "quando em dúvida, criar outro módulo".