以下为例: -Dmaven.test.skip=true clean package -P ENV -pl PROJ -am -U
1. -Dmaven.test.skip=true
-
作用 :跳过单元测试的编译 和执行。
-
细节 :不仅不运行测试,连测试代码(
src/test/java)都不会编译。 -
对比:
-
-DskipTests=true:只跳过测试运行,但会编译测试代码。 -
-Dmaven.test.skip=true:更彻底,跳过全部测试相关工作。
-
2. clean
-
作用 :执行 Maven 的
clean生命周期。 -
细节 :删除项目目录下的
target/文件夹,清理之前构建生成的所有文件(如.class、JAR/WAR 包等),确保构建从干净状态开始,避免残留文件带来的问题。
3. package
-
作用 :执行 Maven 的
package生命周期。 -
细节 :将编译后的代码打包成 JAR、WAR 等可分发格式,输出到
target/目录。 -
注意 :
clean package组合起来就是"先清理,再打包"。
4. -P $ENV
-
作用:激活指定的 Maven Profile(配置文件)。
-
细节 :
$ENV是一个环境变量 ,通常在 CI/CD 中动态传入(如dev、test、prod)。 -
用途 :根据不同的环境加载不同的配置(如数据库连接、日志级别、打包资源等),在
pom.xml中通过<profiles>标签定义。
5. -pl $PROJ
-
作用 :指定要构建的子模块 (
--project-list的简写)。 -
细节 :
$PROJ是模块的 artifactId(或者用groupId:artifactId格式),多个模块用逗号分隔。 -
示例 :
-pl module-a,module-b表示只构建这两个子模块。
6. -am
-
作用 :同时构建依赖的项目 (
--also-make的简写)。 -
细节 :如果
$PROJ依赖了其他模块,Maven 会先将这些被依赖的模块也构建出来,然后再构建目标模块。 -
场景:在多模块项目中非常常用,避免因依赖缺失而导致构建失败。
7. -U
-
作用 :强制更新快照(SNAPSHOT)依赖 (
--update-snapshots的简写)。 -
细节:让 Maven 强制检查远程仓库中 SNAPSHOT 版本是否有更新,并重新下载,而不是使用本地缓存的旧版本。
-
适用:开发阶段,依赖的 SNAPSHOT 版本频繁变动时使用。
完整命令执行流程
text
1. 清理所有目标模块的 target/ 目录(clean)
2. 根据 $ENV 激活对应环境的 Profile(-P)
3. 确定要构建的模块及依赖链(-pl + -am)
4. 强制更新 SNAPSHOT 依赖(-U)
5. 跳过测试编译与执行(-Dmaven.test.skip=true)
6. 执行打包操作(package)