¿Ejecutar una única ejecución de complemento de Maven?

97

Pensé que era un usuario experimentado de Maven, ¡pero estoy teniendo un bloqueo mental sobre cómo hacer esto!

He podido usar el complemento sql de Maven para soltar, crear e instalar un esquema en una base de datos a través de ejecuciones de complementos que he definido y vinculado a la pre-integration-testfase.

Sin embargo, ahora me gustaría usar ese mismo complemento sql para insertar algunos datos de muestra cuando quiera desde la línea de comando, es decir, no vinculado a ningún objetivo del ciclo de vida. Hay algunos conjuntos diferentes de datos de muestra, por lo que me gustaría definir algunas ejecuciones diferentes.

Pero, ¿hay alguna manera de ejecutar una de estas ejecuciones desde la línea de comando usando quizás el ID de ejecución?

HDave
fuente

Respuestas:

134

Como se indica en ¿Cómo ejecutar la ejecución del complemento maven directamente desde la línea de comando? , esta funcionalidad ha sido implementada como MNG-5768 y está disponible en Maven 3.3.1.

El cambio:

extienda la sintaxis de invocación directa de complementos para permitir el parámetro opcional @ execution-id, por ejemplo, org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executionId.

Entonces, siempre que le dé a su ejecución una identificación:

mvn sql:execute@specific-execution-id

usa la ejecución configurada en su pom.

Joe
fuente
Esto es genial :)
GabrielBB
49

Pero, ¿hay alguna manera de ejecutar una de estas ejecuciones desde la línea de comando usando quizás el ID de ejecución?

No, no es posible . Sin embargo, lo que es posible es definir "una" configuración que se utilizará cuando el complemento se invoca desde la línea de comandos utilizando el default-cliID de ejecución "especial" :

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>sql-maven-plugin</artifactId>
  <version>1.4</version>
  ...
  <executions>
    <execution>
      <id>default-cli</id>
      <configuration>
        ...
      </configuration>
    </execution>
    ...
  </executions>
</plugin>

Y simplemente llama mvn sql:execute.

Consulte los detalles a continuación (de las notas de la versión de Maven 2.2.0 ):

  • MNG-3401 : a partir de Maven 2.2.0, los objetivos invocados directamente desde la línea de comandos se pueden configurar en el POM por separado de otras invocaciones de complementos mediante un executionIdllamado especial default-cli. Donde anteriormente, todas las configuraciones para los objetivos de la línea de comandos tenían que ir en la configuración de nivel de complemento, Maven 2.2.0 permite que las configuraciones específicas de la línea de comandos se separen en las suyas propias <execution>. Para obtener más información, consulte la Guía de ID de ejecución predeterminados .
Pascal Thivent
fuente
1
Apuesto a que podría lograr lo que desea utilizando dos perfiles diferentes
Daniel Kaplan
4
Esta respuesta ahora está desactualizada con las versiones actuales de Maven. Vea la respuesta proporcionada por @Joe
Noremac