以下是本次 Spring Boot 多环境配置(profile)机制涉及的所有修改点,按构建生效链路顺序整理。
修改点总览
| 步骤 | 文件 | 修改内容 | 作用 |
|---|---|---|---|
| 1 | pom.xml(父) | 新增 <profile.active>druid</profile.active> 默认值 | 提供默认 profile,本地开发不传参也能正常运行 |
| 2 | application.yml | active: druid → active: ${profile.active} | 用占位符接收 Maven 传入的 profile 值 |
| 3 | ruoyi-admin/pom.xml | 新增 <resources> 资源过滤配置 | 让 Maven 在打包时替换 yml 中的 ${profile.active} 占位符 |
| 4 | ruoyi-admin/pom.xml | <finalName> 改为 self_assessment_admin | 让产物 jar 名与 bat 脚本判断的文件名一致 |
| 5 | 创建jar_linux_test.bat | 参数改为 -Dproject.build.directory | 正确指定输出目录为 target-linux-test |
| 6 | 创建jar_linux_prod.bat | 参数改为 -Dproject.build.directory | 正确指定输出目录为 target-linux-prod |
逐步详细说明
步骤 1:父 pom.xml 增加 profile 默认值
在 <properties> 中添加:
xml
<properties>
<!-- 默认激活的Spring profile,构建时可通过 -Dprofile.active=druid,linux-test 覆盖 -->
<profile.active>druid</profile.active>
<ruoyi.version>3.9.2</ruoyi.version>
...
作用:定义 Maven 属性 profile.active 的默认值。命令行 -Dprofile.active=xxx 会覆盖它;不传时用 druid,保证本地开发环境正常。
步骤 2:application.yml 使用占位符
将:
yaml
spring:
profiles:
active: druid
改为:
yaml
spring:
profiles:
active: ${profile.active}
作用:让 Spring Boot 的 profiles.active 值不再是写死的 druid,而是引用 Maven 属性 profile.active。打包时由 Maven 过滤替换成实际值。
步骤 3:ruoyi-admin/pom.xml 开启资源过滤
在 <build> 中新增 <resources>:
xml
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application*.yml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>application*.yml</exclude>
</excludes>
</resource>
</resources>
<plugins>
...
作用:这是让步骤 2 占位符真正生效的关键。只对 application*.yml 开启 filtering=true,Maven 打包时才会把 ${profile.active} 替换成步骤 1 定义的属性值。其余文件(logback.xml 等)保持 filtering=false,避免运行时占位符被误替换。
步骤 4:ruoyi-admin/pom.xml 修正 finalName
将:
xml
<finalName>zipinggu_admin</finalName>
改为:
xml
<finalName>self_assessment_admin</finalName>
作用:finalName 决定最终 jar 文件名。bat 脚本里判断的是 self_assessment_admin.jar,原值 zipinggu_admin 会导致脚本找不到产物而报错。
步骤 5:创建jar_linux_test.bat 修正输出目录参数
将:
bat
-Dmaven.build.output.directory=target-linux-test
改为:
bat
-Dproject.build.directory=target-linux-test
作用:maven.build.output.directory 不是标准 Maven 参数,无法生效。改用标准的 project.build.directory(即 Maven 的 ${project.build.directory}),jar 才会真正输出到 ruoyi-admin\target-linux-test。
步骤 6:创建jar_linux_prod.bat 修正输出目录参数
将:
bat
-Dmaven.build.output.directory=target-linux-prod
改为:
bat
-Dproject.build.directory=target-linux-prod
作用:同步骤 5,让 prod 构建正确输出到 ruoyi-admin\target-linux-prod。
完整生效链路(回顾)
code
① 父pom定义默认值 profile.active=druid
↓
② bat 传参 -Dprofile.active=druid,linux-test(覆盖默认值)
↓
③ maven-resources-plugin 过滤 application*.yml
↓
④ application.yml 的 ${profile.active} → druid,linux-test
↓
⑤ Spring Boot 启动加载 application-druid.yml + application-linux-test.yml
↓
⑥ -Dproject.build.directory 指定输出目录
↓
⑦ finalName=self_assessment_admin 生成 jar → copy 重命名
这 6 处修改缺一不可:1、2、3 共同打通「profile 参数传递」链路;4 保证 jar 命名正确;5、6 保证产物落到独立目录。
补充:配置logs日志路径:

机制&spm=1001.2101.3001.5002&articleId=165737649&d=1&t=3&u=ede74b232d6a4d4d90b9bb2702f85331)
1147

被折叠的 条评论
为什么被折叠?



