多环境开发控制
- maven和SpringBoot同时设置多环境以哪个为主?
- 要想处理这个冲突问题,你要先理清一个关系,究竟谁在多环境开发中其主导地位。也就是说如果现在都设置了多环境,谁的应该是保留下来的,另一个应该遵从相同的设置。
- maven是做什么的?项目构建管理的,最终生成代码包的,SpringBoot是干什么的?简化开发的。简化,又不是其主导作用。最终还是要靠maven来管理整个工程,所以SpringBoot应该听maven的。
- 当maven和springboot环境产生冲突的时候,应该让boot使用maven中的环境
大体思想如下:
- 先在maven环境中设置用什么具体的环境
- 在SpringBoot中读取maven设置的环境即可
- Maven中设置多环境属性
<!--设置多环境-->
<profiles>
<profile>
<id>env_dev</id>
<properties>
<profile.active>dev</profile.active>
</properties>
<!--设置默认启动该环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>env_pro</id>
<properties>
<profile.active>pro</profile.active>
</properties>
</profile>
</profiles>
- SpringBoot中引用Maven属性
- 执行Maven打包指令,并在生成的boot打包文件.jar文件中查看对应信息
-
把项目打包后,用压缩软件打开查看该 jar 包中的配置文件属性
- 可以看到配置的就是pom中设置的默认启动的 dev 环境
小节:
- 当Maven与SpringBoot同时对多环境进行控制时,以Mavn为主,SpringBoot使用
@..@
占位符读取Maven对应的配置属性值 - 基于SpringBoot读取Maven配置属性的前提下,如果在Idea下测试 工程时pom.xml每次更新需要手动compile方可生效