在 Maven2中列出所有可能的目标?

我是 Maven 的新成员,来自蚂蚁世界。

Is it possible to list all of the possible goals (including, say, all the plugins) that you can run?

我可以看到在 Maven1中曾经有一个 -g标志,但是在版本2中没有这个标志。

125453 次浏览

您在命令行中指定的目标链接到 Maven 的 生命周期。例如,build生命周期(你也有不同的 cleansite生命周期)由以下阶段组成:

  • validate: validate the project is correct and all necessary information is available.
  • compile: compile the source code of the project.
  • test: 使用合适的单元测试框架测试已编译的源代码。这些测试不应要求打包或部署代码。
  • package: 获取编译后的代码并将其打包为其可分发格式,例如 JAR。
  • integration-test: 必要时将包处理并部署到可以运行集成测试的环境中。
  • verify: 运行任何检查,以验证包装是有效的,并符合质量标准
  • install: 将包安装到本地存储库中,以便在其他本地项目中作为依赖项使用。
  • deploy: 在集成或发布环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。

你可以找到“核心”插件的列表 给你,但是还有很多其他的插件,比如 codehaus 插件,here

是否有可能列出所有可能运行的目标(包括所有插件) ?

Maven 没有为此内置任何东西,尽管 phases的列表是有限的(插件目标的列表不是,因为插件的列表不是)。

但是你可以使事情变得更简单,并利用 Bash 完成的强大功能(如果你在 Windows 下使用 cygwin) ,正如 Maven 2.x 使用 BASH 自动完成指南中所描述的那样(但是在选择本指南中的脚本之前,请进一步阅读)。

要使事情正常运行,首先按照 这本指南在计算机上设置 bash 完成。然后,是时候为 Maven2准备一个脚本了:

  • 你可以用 迷你导游的那个
  • 当你使用一个改进的版本附加到 MNG-3928
  • 虽然你可以使用随机脚本在网上找到(如果你好奇的话,请参阅资源)
  • 我个人使用 完成脚本从卢多维克克劳德的 PPA(它被绑定到 Ubuntu 中的 maven打包版本中) ,你可以从 HEAD 中使用 下载这是最好的一个.

下面是我得到的结果:

$ mvn [tab][tab]
Display all 377 possibilities? (y or n)
ant:ant
ant:clean
ant:help
antrun:help
antrun:run
archetype:crawl
archetype:create
archetype:create-from-project
archetype:generate
archetype:help
assembly:assembly
assembly:directory
assembly:directory-single
assembly:help
assembly:single
...

Of course, I never browse the 377 possibilities, I use completion. But this gives you an idea about the size of "a" list :)

资源

如果你使用 IntelliJ IDEA,你可以在 Maven Projects选项卡中浏览所有 maven 的目标/任务(包括插件) :

Maven Projects

让我们把事情简单化:

Maven 生命周期: 1. 清洁 2. 默认(构建) 3. 工地

默认生命周期的 Maven 阶段: 1. 验证 2. 编译 3. 测试 4. 包裹 5. 核实 6. 安装 7. 部署

注: 不要将 Maven 目标与 Maven 生命周期混淆或混淆。

See Maven Build Lifecycle Basics1

构建生命周期由阶段组成

每个构建生命周期都由不同的构建阶段列表定义,其中构建阶段表示生命周期中的一个阶段。

例如,默认的生命周期由以下阶段组成(对于生命周期阶段的完整列表,请参考生命周期参考) :

  • 验证-验证项目是正确的,并且所有必要的信息都是可用的
  • 编译-编译项目的源代码
  • 使用合适的单元测试已编译的源代码 测试框架。这些测试不应该要求代码是 包装或部署
  • Package-获取已编译的代码并将其打包 以其可分发格式,例如 JAR.valid- 运行任何检查 对集成测试的结果进行分析,以确保满足质量标准
  • Install-install 包到本地存储库中,用作 dependency in other projects locally
  • 在构建环境中完成,将最终包复制到远程存储库 sharing with other developers and projects.

这些生命周期阶段(加上这里没有显示的其他生命周期阶段)按顺序执行,以完成缺省的生命周期。考虑到以上的生命周期阶段,这意味着当使用默认生命周期时,Maven 将首先验证项目,然后尝试编译源代码,针对测试运行源代码,打包二进制文件(例如 jar) ,针对该包运行集成测试,验证集成测试,将经过验证的包安装到本地存储库,然后将已安装的包部署到远程存储库。

资料来源: https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

奇怪的是,竟然没有列出一条实际的操作指令:

mvn help:describe -e -Dplugin=site

如果你想列出所有目标的 site插件。输出:

名称: ApacheMavenSite 插件描述: MavenSite 插件是一个 为当前项目生成站点的插件。组 ID: Plugins Artifact Id: maven-site-plugin Version: 3.7.1 目标前缀: 网站

这个插件有9个目标:

Site: att- 描述符描述: 添加站点描述符 (site.xml)添加到要添加的文件列表中 已安装/部署。 对于 Maven-2.x,默认情况下只有当项目有 pom 时才启用 打包,因为它将被继承的模块使用,但是这可以 如果需要,为其他项目打包启用。 此默认执行已从 Maven 3. x for pom-project. 用户实际上使用这些项目 为子模块提供一个通用的站点描述符将需要显式 定义目标执行以恢复预期的行为。

使用旅行车部署生成的站点 supported protocols to POM 部分中指定的站点 URL。 对于 scp 协议,将网站文件打包为 zip 压缩文件, then the archive is transfered to the remote host, next it is un-archived 这比文件拷贝要快得多。

网站描述: 显示有效的网站 描述符作为此 在继承和插入 site.xml 之后,为第一个 地点。

网站: help 描述: 显示帮助信息 Maven-site-plugin. 调用 mvn site: help-DDetails = true-Dtarget = 以显示参数 详情。

JAR 描述: 将站点输出打包成一个 JAR,以便 可以展开 一个仓库。

Site: run 描述: 启动站点,将文档呈现为 requested for 更快的编辑。它使用 Jetty 作为网络服务器。

Site: site 描述: 为单个项目生成站点。 请注意,多模块构建中模块站点之间的链接将无法工作, 因为本地构建目录结构与部署的站点不匹配。

阶段描述: 将生成的站点部署到本地 表演或模拟 中指定的站点 URL 的基础上创建的 部分。 它可用于测试多模块中模块站点之间的链接 建造工作。

这个目标要求站点已经使用该站点生成 目标,例如通过调用 mvn 站点。

site:stage-deploy Description: Deploys the generated site to a 对象的主持 URL 或模拟 URL site URL specified in the section of the POM, 使用旅行车支持的协议

有关更多信息,请运行‘ mvn help: description [ ... ]-DDetails’

更多有关 https://mkyong.com/maven/how-to-display-maven-plugin-goals-and-parameters/的资料