Executar uma única execução do plugin Maven?

97

Achei que fosse um usuário experiente do Maven, mas estou com um bloqueio mental para saber como fazer isso!

Consegui usar o plugin Maven sql para eliminar, criar e instalar um esquema em um banco de dados por meio de execuções de plugin que defini e vinculei à pre-integration-testfase.

No entanto, agora eu gostaria de usar o mesmo plug-in sql para inserir alguns dados de amostra sempre que quiser na linha de comando - ou seja, não vinculado a nenhum objetivo de ciclo de vida. Existem alguns conjuntos diferentes de dados de amostra, portanto, gostaria de definir algumas execuções diferentes.

Mas existe uma maneira de executar uma dessas execuções a partir da linha de comando usando o ID de execução, talvez?

HDave
fonte

Respostas:

134

Conforme observado em Como executar a execução do plugin maven diretamente da linha de comando? , essa funcionalidade foi implementada como MNG-5768 e está disponível no Maven 3.3.1.

A mudança irá:

estenda a sintaxe de invocação direta do plugin para permitir o parâmetro @ running-id opcional, por exemplo, org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executeId.

Portanto, contanto que você forneça um id à sua execução:

mvn sql:execute@specific-execution-id

usa a execução configurada em seu pom.

Joe
fonte
Isso é ótimo :)
GabrielBB
49

Mas existe uma maneira de executar uma dessas execuções a partir da linha de comando usando o ID de execução, talvez?

Não, não é possível . O que é possível, porém, é definir a configuração "a" a ser usada quando o plug-in é invocado a partir da linha de comando usando o default-cliID de execução "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>

E simplesmente ligue mvn sql:execute.

Veja abaixo os detalhes (nas notas de versão do Maven 2.2.0 ):

  • MNG-3401 - A partir do Maven 2.2.0, os objetivos invocados diretamente da linha de comando podem ser configurados no POM separadamente de outras invocações de plugins usando um executionIdchamado especial default-cli. Onde antes, todas as configurações para objetivos de linha de comando tinham que ir na configuração em nível de plugin, o Maven 2.2.0 permite que configurações específicas de linha de comando sejam separadas em suas próprias <execution>. Para obter mais informações, consulte o Guia para IDs de execução padrão .
Pascal Thivent
fonte
1
Aposto que você poderia conseguir o que deseja usando dois perfis diferentes
Daniel Kaplan
4
Esta resposta agora está desatualizada com as versões atuais do Maven. Veja a resposta fornecida por @Joe
Noremac