如何直接从命令行执行Maven插件执行?


93

我有一个配置了执行的插件(antrun),该插件具有一个id,并且未绑定到任何阶段。我可以直接从命令行执行此执行吗?

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

用以下命令运行它:

mvn my-execution

或至少

mvn magicplugin:execute -DexecutionId=my-execution

Answers:


128

此功能已实现MNG-5768,并且在Maven 3.3.1中可用。

更改将:

扩展直接插件调用语法以允许使用可选的@ execution-id参数,例如org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process @ executionId。

因此,在您的情况下:

mvn antrun:run

使用default-cli执行ID,并:

mvn antrun:run@my-execution

使用pom中配置的执行。


1
通过工件ID“ maven-antrun-plugin”,我们如何知道应该在其中使用的仅仅是“ antrun” mvn antrun:run
mks-d

1
@ mks-d pluginGroups有关为什么org.apache.maven.plugins:maven-antrun-plugin可以称为的原因antrun

1
@Joe谢谢,在插件组的顶部,显然还有插件前缀解析机制……
mks-d

49

执行Maven插件的最直接方法是直接在命令行上指定插件目标。

mvn groupId:artifactId:version:goal

有关更多信息,请参见Maven插件开发指南


1
但是,如何才能完全运行“ default-cli”执行?插件定义中是否有多个执行。
安东·巴拉肖夫

我一直在努力让Spring Boot Jasypt实用程序插件运行,无论出于何种原因,我都能被Maven认可的唯一方法是遵循上述建议。仅指定目标(mvn jasypt:encrypt ...)还不够。谢谢@ dimitri-dewaele。
麦克

15

您要查找的内容已捕获在Default + Plugin + Execution + ID中,但据我所知,当前不支持。但是,根据MNG-3401的评论(请阅读到最后):

对于直接从命令行调用的mojo,可以使用执行ID:'default-cli'从POM提供配置,如下所示:

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

这应该可以在Maven 2.2.0和3.x中使用。

也许这对您来说就足够了。


如果您的答案正确,那不完全是问题;)。
Tony Chemit '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.