Apache Maven 的常用命令行参数
Apache Maven 是一个常用的 Java 构建工具。在日常的开发中通常不会关注 Maven 命令的参数。但在持续集成时,有些命令行参数很重要。下面对 Maven 3.6.3
的常用命令行参数进行介绍。
-B
或 --batch-mode
该参数可以启用 Maven 的批处理模式。在批处理模式中,Maven 不会显示下载相关的信息,也不会为输出的信息添加颜色。
在批处理模式下,Maven 的执行性能会有所提升。在持续集成时,推荐使用
-B
选项。
-D
该参数用来定义系统属性,最常见的用法是通过 -DskipTests
来跳过测试。
-e
或 --errors
输出错误的详细信息。
-fae
或 --fail-at-end
在构建过程中,当某个模块出现错误时,其他不受影响的模块的构建可以进行。错误会在构建完成之后才出现。
-ff
或 --fail-fast
在构建过程中,第一个出现的错误会导致整个构建过程终止。
-fn
或 --fail-never
构建过程永远不会失败。
-ntp
或 --no-transfer-progress
在构建过程中,不显示下载和上传的进度。这个参数在 Maven 3.6.1
才添加。
-P
或 --activate-profiles
启用概要配置,比如 -Pnative
可以启用名为 native
的概要配置。
-q
或 --quiet
启用静默模式,只显示错误。
-T
或 --threads
指定线程的数量,C
表示 CPU 的核数,比如 2C
表示 CPU 核的数量的两倍。
-U
或 --update-snapshots
强制更新快照依赖。如果当前项目依赖了 Maven 仓库中的快照类型的依赖,该参数会强制要求更新到这些依赖的最新版本。
比如,项目 A 依赖的项目 B 的版本为 1.0-SNAPSHOT
。在构建项目 A 时,-U
参数会强制更新项目 B 的版本。
启用
-U
会极大的降低 Maven 构建的速度,因为每次都需要对远程仓库进行检查,并下载最新的版本。如果一个项目的不同组件有各自的代码仓库和 Maven 项目,那么为了保证引用到最新版本的依赖,使用-U
是必不可少的。如果把相互依赖的项目整合到同一个代码仓库中的单一 Maven 项目中,可以避免不必要的 Maven 项目的发布和获取,确保整个构建过程的稳定性。
-X
和 --debug
启用调试模式,输出详细信息。
在持续集成中,推荐使用的参数是
-B -ntp
。这样可以减少 Maven 不必要的输出,提升性能。