ChatGPT解决这个技术问题 Extra ChatGPT

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

我有一个配置了执行的插件(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
这回答了你的问题了吗? Run a single Maven plugin execution?

m
mkobit

此功能已在 implemented 中作为 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.xml 中配置的执行。


根据工件 ID“maven-antrun-plugin”,我们如何知道应该在 mvn antrun:run 中使用的只是“antrun”?
@mks-d 请参阅 pluginGroups,了解为什么可以将 org.apache.maven.plugins:maven-antrun-plugin 称为 antrun
@Joe 谢谢,除了插件组之外,显然还有 Plugin Prefix Resolution 机制......
D
Dimitri Dewaele

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

mvn groupId:artifactId:version:goal

更多信息请访问:Development guide for Maven plugins


但是我怎样才能准确地运行“default-cli”执行?如果插件定义中有多个执行。
我正在努力让 Spring Boot Jasypt 实用程序插件运行,无论出于何种原因,我能让它得到 Maven 认可的唯一方法就是遵循上面的建议。仅直接指定目标 (mvn jasypt:encrypt ...) 是不够的。谢谢@dimitri-dewaele。
该问题要求运行特定的执行;您的答案将运行为目标配置的所有执行。
你如何添加配置?
p
pitseeker

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

对于直接从命令行调用的 mojos,您可以使用 executionId: 'default-cli' 从 POM 提供配置,如下所示: maven-assembly-plugin < id>default-cli jar-with-dependencies project 这应该在 Maven 2.2.0 和 3.x 中工作。

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


如果您的答案正确,那不完全是问题事件;)。