Pregunta

Quiero correr un simple experto puesto de mando exec fase de instalación. ¿Cuál es la forma más sencilla posible para lograr esto? (Sin la adición de nuevos plugins)

¿Fue útil?

Solución

Si desea ejecutar este comando como parte del ciclo de vida de la acumulación normal, no hay otra manera que la unión exec el objetivo de la 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>

Hice una prueba simple usando la configuración anterior (utilizando ls como "comando") con un proyecto Maven recién creado y mvn install funcionamiento produce la salida siguiente:

$ 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, el comando se ejecuta al final de la fase install (después de la copia del artefacto al repositorio local).

Y si realmente no quiere añadir el fragmento a su pom, entonces usted tiene que llamar explícitamente exec:exec después install en la línea de comandos como se sugiere en Whaley.

Otros consejos

El ciclo de vida por defecto experto termina con el Instalar y Distribuir objetivos -. No hay una versión previa y posterior de esos objetivos

Las posibles opciones serían:

  • Enlace el ejecutivo: mojo exec para la fase de implementación. Te gustaría advertir de que la idea ya que la fase de implementación sirve realmente para implementar artefactos a un repositorio Maven remoto.

  • Ejecutar el ejecutivo: mojo ejecutivo después del gol instalar en su invocación mvn ... por ejemplo:.

    mvn exec instalación limpia: Exec -Dexec.executable = "" yourcommand -Dexec.args = "argumentos"

  • Si usted tiene un proyecto de varios módulos, crear otro módulo al final de sus módulos <> y se unen ejecutivo: exec para cualquiera de los objetivos habituales dentro de ese módulo. Esto obligará a este módulo en particular para funcionar última asumiendo otra el reactor se ve en no se cumple. Una estrategia común que empleo con proyectos de Maven es que trabajo "en caso de duda, crear otro módulo".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top