mvn clean package -Dmaven.test.skip=true -P pro参数解释

mvn clean package -Dmaven.test.skip=true -P pro

  • 1 clean
    清理项目的 target/ 目录,确保构建从干净环境开始。

  • 2 package
    执行 Maven 的生命周期到 package 阶段,通常会生成 .jar.war 包。

  • 3 -Dmaven.test.skip=true
    跳过测试用例的 执行编译
    这是一个 JVM 系统属性,Maven 构建时会跳过 Surefire/Failsafe 测试任务。

  • 4 -P pro
    它表示 激活 Maven Profile:pro
    Profile 是 Maven 用来实现“不同环境构建”的机制,例如 devtestprepro 等。

- P pro 在哪里读取配置

  • pom.xml(最常见)
    项目的 pom.xml 内部定义:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <profiles>
    <profile>
    <id>pro</id>
    <properties>
    <env>prod</env>
    </properties>
    <activation>
    <activeByDefault>false</activeByDefault>
    </activation>
    </profile>
    </profiles>
  • ~/.m2/settings.xml(用户级别配置)
    这里也可以定义 profile,例如仓库源、私服账号:

    1
    2
    3
    4
    5
    6
    7
    8
    <profiles>
    <profile>
    <id>pro</id>
    <properties>
    <nexus.url>http://nexus.example.com</nexus.url>
    </properties>
    </profile>
    </profiles>
  • 全局 settings.xml(Maven 安装目录 conf/settings.xml)

2.2 优先级(从高到低)

  1. 命令行 -P pro
  2. 用户级 ~/.m2/settings.xml
  3. 项目级 pom.xml

**Profile 通常影响哪些内容

1.典型使用场景:

  • 切换不同环境配置文件(application-dev.yml / application-pro.yml)
  • 控制不同插件行为
  • 指定不同 JDK 版本
  • 切换依赖(日志实现、数据库驱动)

2.例子(Spring Boot 常用)

1
2
3
4
5
6
7
8
<profiles>
<profile>
<id>pro</id>
<properties>
<activatedProperties>pro</activatedProperties>
</properties>
</profile>
</profiles>

然后在 resources/application.yml 中使用:

1
2
3
spring:
profiles:
active: @activatedProperties@

构建时:

mvn package -P pro

产物将写入 application-pro.yml 的配置。