一、基础参数

参数说明
-Dmaven.test.skip=true跳过测试(编译和执行都跳过)。
-DskipTests仅跳过测试执行(但会编译测试代码)。
-X开启调试模式,输出详细日志(排查构建问题)。
-q静默模式,仅输出错误信息。
-e显示详细错误堆栈(适合排查异常)。
-U强制更新快照依赖(忽略本地缓存,从远程仓库拉取最新快照版本)。

二、模块控制参数

参数说明
-pl, --projects指定要构建的模块(支持逗号分隔)。例如:mvn package -pl module1,module2
-am, --also-make构建指定模块及其依赖的模块。例如:mvn package -pl moduleB -am
-amd, --also-make-dependents构建指定模块及其依赖它的模块。例如:mvn package -pl moduleC -amd

三、打包过程控制

参数说明
-DskipAssembly跳过 Assembly 插件(适用于 maven-assembly-plugin 的打包任务)。
-DdescriptorRefs指定 Assembly 描述符(自定义打包结构)。例如:jar-with-dependencies
-Dmaven.exec.skip=true跳过 Exec 插件的执行目标(如 javaexec:java)。

四、构建输出控制

参数说明
-DoutputDirectory自定义打包输出目录。例如:mvn package -DoutputDirectory=./dist
-DfinalName修改生成的文件名。例如:mvn package -DfinalName=myapp-1.0.jar

五、插件相关参数

1. Maven JAR 插件
参数说明
-Djar.finalName指定 JAR 文件名
-Djar.manifest.mainClass设置 JAR Manifest 的主类(用于可执行 JAR)。
2. Maven Shade 插件
参数说明
-Dshade.jar.name自定义 Shade 打包后的文件名
-Dshade.relocations重定位依赖包的包路径(避免冲突)。

六、性能优化参数

参数说明
-T, --threads并行构建。例如:-T 4 表示使用 4 个线程。
-Dmaven.compile.fork=true启用编译器多线程(加速编译)。

七、完整示例

1. 常规打包(跳过测试)
mvn clean package -DskipTests
2. 打包指定模块
mvn clean package -pl service-module,web-module -am
3. 生成可执行 JAR(使用 Shade 插件)
mvn clean package -Dshade.finalName=myapp.jar -Dshade.relocations=com.example=shaded.com.example
4. 强制更新快照依赖并并行构建
mvn clean install -U -T 2

八、注意事项

  1. 参数顺序
    参数位置可能影响结果,例如 -DskipTests 应放在 package 前或后均可,但某些插件参数需紧跟插件目标。
  2. 插件配置优先级
    命令行参数会覆盖 pom.xml 中的默认配置。
  3. 依赖冲突
    使用 -Dmaven.test.skip=true 时,若测试依赖未编译可能导致意外错误。

通过合理组合这些参数,可以高效控制 Maven 打包流程,满足开发、测试和生产环境的不同需求。

更多推荐