多环境开发兼容问题
如果在maven和boot中都有多环境开发,那么由谁来做主呢?
在maven中我们默认是pro环境:
<!--配置多环境-->
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<profile.active>dev</profile.active>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>pro</id>
<properties>
<profile.active>pro</profile.active>
</properties>
<!--设置是否使默认启动环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
</profiles>
在root中我们默认dev环境:
#设置启用的环境
spring:
profiles:
active: dev
---
#开发
#spring:
# profiles: dev
#server:
# port: 80
#第二种写法
spring:
config:
activate:
on-profile: dev
server:
port: 80
---
#生产
spring:
profiles: pro
server:
port: 81
---
#测试
spring:
profiles: test
server:
port: 82
我们会发现如果不配置,是boot中的为主。
怎样配置?
#设置启用的环境
spring:
profiles:
active: ${profile.active}
---
#开发
#spring:
# profiles: dev
#server:
# port: 80
#第二种写法
spring:
config:
activate:
on-profile: dev
server:
port: 80
---
#生产
spring:
profiles: pro
server:
port: 81
---
#测试
spring:
profiles: test
server:
port: 82
此时并不能解析${profile.active},我们需要在pom.xml中配置
加入插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
这样再打包运行就是以maven中的为主了