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)

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top