如何显示可用目标列表?

Mat*_*ias 47 maven-2

我是相当新的Maven和我经常发现自己想看看有什么实际上在目标方面.

那么,是否有一个命令列出了例如给定前缀的所有可用目标?

Pas*_*ent 45

由于Maven是一个开放的插件系统,最好的答案可能是"谷歌";-).如果您指的是所有构建生命周期阶段,它们都是静态的,可以在http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html和其他地方找到.

然后,对于给定的插件,可以使用帮助插件来获取可能的目标及其所有参数:

mvn help:describe -DgroupId=org.apache.maven.plugins \
                  -DartifactId=maven-war-plugin \
                  -Ddetail=true
Run Code Online (Sandbox Code Playgroud)

但这并没有真正回答你的问题,尤其是"对于给定的前缀"部分.为此,最好的解决方案可能是使用**自动完成BASH(**不确定它是否会详尽无遗).例如,参见使用BASH的Maven 2.x自动完成指南.要在Windows下完成bash完成,您需要CYGWIN.有关详细的设置步骤(以及"更好的"工作自动完成脚本),请参阅Bash中的Maven Tab Auto Completion.


ben*_*nch 7

一个较短的方式

或者,您也可以使用该-Dplugin参数显示可用目标列表.

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-war-plugin\
                  -Ddetail=true
Run Code Online (Sandbox Code Playgroud)

请参阅Maven帮助插件.


dav*_*xxx 6

越来越多的 Maven 插件提出了帮助目标作为详细mvn help:describe命令的替代方案 。

您可以从Maven 文档中阅读:

最近的 Maven 插件通常有一个帮助目标,即在命令行中包含插件的描述,以及它们的参数和类型

这确实更自然,使用起来更愉快。

它当然适用于Maven 核心插件
一些例子 :

  • 列出dependency插件的目标:

    mvn dependency:help

  • 详细了解插件的javadoc目标javadoc

    mvn javadoc:help -Ddetail -Dgoal=javadoc

它也适用于第三方插件

例如,列出以下目标spring-boot-maven-plugin

mvn org.springframework.boot:spring-boot:help
Run Code Online (Sandbox Code Playgroud)

[信息] Spring Boot Maven 插件 2.0.0.RELEASE Spring Boot Maven 插件

这个插件有 6 个目标:

弹簧引导:构建信息

根据当前 MavenProject 的内容生成一个 build-info.properties 文件。

弹簧靴:帮助

显示有关 spring-boot-maven-plugin 的帮助信息。调用 mvn spring-boot:help -Ddetail=true -Dgoal= 显示
参数详细信息。

弹簧引导:重新打包

重新打包现有的 JAR 和 WAR 存档,以便可以使用 java -jar 从命令行执行它们。使用 layout=NONE 也可以简单地用于打包具有嵌套依赖项的 JAR(没有主类,因此不可执行)。

.....

或获取有关build目标的详细信息dockerfile-maven-plugin

mvn com.spotify:dockerfile-maven-plugin:help -Ddetail -Dgoal=build
Run Code Online (Sandbox Code Playgroud)

[信息] Dockerfile Maven 插件 1.3.6

添加对在 Maven 中构建 Dockerfile 的支持

dockerfile:构建

可用参数:

- archive

  The archive configuration to use for the Docker info JAR. This can be used
  to embed additional information in the JAR.
Run Code Online (Sandbox Code Playgroud)

....

您可能会注意到,用于获取帮助的详细输出并专注于特定目标 ( -Ddetail -Dgoal=myGoal)的语法与用于核心 maven 插件的语法完全相同。

当然,一些深奥的插件可能无法提供help目标,但在大多数精心设计的插件中,这是存在的。