Como executar a execução do plugin maven diretamente da linha de comando?

93

Tenho um plugin (antrun) com uma execução configurada que possui um id e não está vinculado a nenhuma fase. Posso executar esta execução diretamente da linha de comando?

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <id>my-execution</id>
      ...
    </execution>
  </executions>
</plugin>

Execute-o com algo como:

mvn my-execution

ou pelo menos

mvn magicplugin:execute -DexecutionId=my-execution
artemb
fonte

Respostas:

128

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

Então, no seu caso:

mvn antrun:run

usa o default-cliID de execução e:

mvn antrun:run@my-execution

usa a execução configurada em seu pom.

Joe
fonte
1
A partir do ID do artefato "maven-antrun-plugin", como sabemos que é apenas "antrun" que deve ser usado mvn antrun:run?
mks-d de
1
@ mks-d veja pluginGroupsporque org.apache.maven.plugins:maven-antrun-pluginpode ser referido como antrun.
Joe
1
@Joe obrigado, além dos grupos de plug-ins, há também o mecanismo de resolução de prefixo do plug - in aparentemente ...
mks-d
49

O meio mais direto de executar seu plugin maven é especificar o objetivo do plugin diretamente na linha de comando.

mvn groupId:artifactId:version:goal

Mais informações em: Guia de desenvolvimento para plug-ins Maven

Dimitri Dewaele
fonte
1
Mas como posso executar a execução "default-cli" exatamente? Se houver várias execuções na definição do plugin.
Anton Balashov de
Eu estava lutando para executar um plugin do utilitário Spring Boot Jasypt e, por qualquer motivo, a única maneira de fazer com que fosse reconhecido pelo Maven era seguindo o conselho acima. Apenas especificar o objetivo diretamente ( mvn jasypt:encrypt ...) não era suficiente. Obrigado @ dimitri-dewaele.
Mike
15

O que você está procurando é capturado em Default + Plugin + Execution + IDs, mas que eu saiba atualmente não é compatível. Porém, de acordo com os comentários do MNG-3401 (leia até o final):

para mojos chamados diretamente da linha de comando, você pode fornecer a configuração do POM usando o executionId: 'default-cli' assim:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <executions>
    <execution>
      <id>default-cli</id>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
          <descriptorRef>project</descriptorRef>
        </descriptorRefs>
      </configuration>
    </execution>
  </executions>
</plugin>

Isso deve funcionar no Maven 2.2.0 e 3.x.

Talvez isso seja o suficiente para você.

Pascal Thivent
fonte
esse não era exatamente o evento de pergunta se sua resposta estiver correta;).
Tony Chemit