【发布时间】:2011-04-29 03:34:58
【问题描述】:
我是 Maven 新手,来自 Ant 世界。
是否可以列出您可以运行的所有可能目标(例如,包括所有插件)?
我可以看到 Maven 1 中曾经有一个 -g 标志,但这在版本 2 中不可用。
【问题讨论】:
-
如果没有 xml 页面,maven 无法回答这个问题,这让我抓狂!好东西!
我是 Maven 新手,来自 Ant 世界。
是否可以列出您可以运行的所有可能目标(例如,包括所有插件)?
我可以看到 Maven 1 中曾经有一个 -g 标志,但这在版本 2 中不可用。
【问题讨论】:
您在命令行中指定的目标链接到 Maven 的lifecycle。例如,build 生命周期(您也有不同的 clean 和 site 生命周期)由以下阶段组成:
validate:验证项目是否正确并且所有必要的信息都可用。compile:编译项目源码。test:使用合适的单元测试框架测试编译后的源代码。这些测试不应要求打包或部署代码。package:获取编译后的代码并将其打包成可分发的格式,例如 JAR。integration-test:如有必要,处理包并将其部署到可以运行集成测试的环境中。verify:运行任何检查以验证包是否有效并符合质量标准install:将包安装到本地仓库,作为本地其他项目的依赖。deploy:在集成或发布环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。【讨论】:
是否可以列出所有可能运行的目标(例如,包括所有插件)?
Maven 没有为此内置任何东西,尽管phases 的列表是有限的(插件目标 的列表不是,因为插件列表不是)。
但是您可以使事情变得更简单,并利用bash completion 的强大功能(如果您在 Windows 下使用 cygwin),如Guide to Maven 2.x auto completion using BASH 中所述(但在从本指南中选择脚本之前,请进一步阅读)。
要让事情顺利进行,请首先关注 this guide 在您的计算机上设置 bash 完成。然后,是时候为 Maven2 获取脚本了:
maven 的打包版本中),您可以从HEAD 中download。 这是最好的一个。下面,我得到的只是为了说明结果:
$ mvn [标签] [标签] 显示所有 377 种可能性? (是或否) 蚂蚁:蚂蚁 蚂蚁:干净 蚂蚁:帮助 antrun:帮助 蚂蚁运行:运行 原型:爬行 原型:创建 原型:从项目创建 原型:生成 原型:帮助 组装:组装 程序集:目录 程序集:目录单 组装:帮助 组装:单个 ...当然,我从不浏览 377 种可能性,我使用完成。但这让您了解“a”列表的大小:)
【讨论】:
Maven Shell 工具是否提供自动完成功能,在这里可能有用吗?
mvnsh 不提供补全(至少在我机器上的版本中不提供)。我在回答之前检查了:)
奇怪的是没有人列出一个实际的命令来做到这一点:
mvn help:describe -e -Dplugin=site
如果您想列出site 插件的所有目标。输出:
名称:Apache Maven 站点插件描述:Maven 站点插件是一个 为当前项目生成站点的插件。组号: org.apache.maven.plugins 工件 ID:maven-site-plugin 版本:3.7.1 目标前缀:网站
这个插件有 9 个目标:
site:attach-descriptor 描述:添加站点描述符 (site.xml) 到文件列表 安装/部署。 对于 Maven-2.x,仅当项目有 pom 时才默认启用 打包,因为它将被继承的模块使用,但这可以是 如果需要,为其他项目打包启用。 此默认执行已从内置生命周期中删除 用于 pom 项目的 Maven 3.x。实际使用这些项目的用户 为子模块提供公共站点描述符将需要明确 定义此目标执行以恢复预期的行为。
site:deploy 描述:使用 wagon 部署生成的站点 支持的协议 在 POM 部分中指定的站点 URL。 对于 scp 协议,网站文件由 wagon 打包成 zip 存档, 然后将存档传输到远程主机,然后取消存档 这比逐个文件复制要快得多。
site:effective-site 说明:显示有效站点 作为 XML 的描述符 在 site.xml 的继承和插值之后构建,用于第一个 语言环境。
site:help 描述:显示帮助信息 Maven 站点插件。 调用 mvn site:help -Ddetail=true -Dgoal= 显示参数 详情。
site:jar 描述:将站点输出捆绑到一个 JAR 中,以便它 可以部署 到存储库。
site:run 描述:启动站点,将文档呈现为 要求 更快的编辑。它使用 Jetty 作为 Web 服务器。
site:site 描述:为单个项目生成站点。 请注意,多模块构建中的模块站点之间的链接将不起作用, 因为本地构建目录结构与部署站点不匹配。
site:stage 描述:将生成的站点部署到本地 分期或模拟 目录中指定的站点 URL POM 部分。 它可用于测试多模块中模块站点之间的链接 构建工作。
此目标要求该网站已经使用该网站生成 目标,例如通过调用 mvn site。
site:stage-deploy 描述:将生成的站点部署到 暂存或模拟 URL 到 在 POM 部分中指定的站点 URL, 使用 wagon 支持的协议
有关更多信息,请运行 'mvn help:describe [...] -Ddetail'
更多详情请关注https://mkyong.com/maven/how-to-display-maven-plugin-goals-and-parameters/
【讨论】:
构建生命周期由阶段组成
每个构建生命周期都由不同的构建阶段列表定义,其中构建阶段代表生命周期中的一个阶段。
例如,默认生命周期包含以下阶段(有关生命周期阶段的完整列表,请参阅生命周期参考):
这些生命周期阶段(以及此处未显示的其他生命周期阶段)按顺序执行以完成默认生命周期。鉴于上述生命周期阶段,这意味着当使用默认生命周期时,Maven 将首先验证项目,然后将尝试编译源代码,针对测试运行它们,打包二进制文件(例如 jar),针对该项目运行集成测试打包,验证集成测试,将经过验证的包安装到本地仓库,然后将安装的包部署到远程仓库。
来源:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
【讨论】:
让我们让它变得非常简单:
Maven 生命周期: 1.清洁 2. 默认(构建) 3. 网站
默认生命周期的 Maven 阶段: 1. 验证 2. 编译 3. 测试 4. 包装 5. 验证 6.安装 7. 部署
注意: 不要将 maven 目标与 maven 生命周期混淆或混淆。
请参阅 Maven 构建生命周期基础知识1
【讨论】: