在实际项目开发过程中,往往会有不同的开发环境,如:开发环境、测试环境、预生产环境、生产环境等。
通常在不同的开发环境中,针对项目的配置信息可能不同,比如nacos 注册与配置中心的地址、group分组等。
此时如果没有一个安全、稳定、可靠的各个环境配置文档,会导致开发和bug修复、问题分析等切换很麻烦,也有可能会配置出错,导致问题解决时间的浪费。
接下来就简单说明采取profile设定不同的开发环境和环境切换的操作。
关于环境的配置,分为全局配置和局部配置。
maven路径/conf/settings.xml的内容。增加profiles配置信息,对所有maven项目生效,如:<profiles>
<profile>
<id>alimavenid>
<repositories>
<repository>
<id>alimavenid>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>trueenabled>
<updatePolicy>neverupdatePolicy>
snapshots>
repository>
repositories>
profile>
profiles>
下面开始介绍局部配置。
博客的编写,只展示两个环境开发环境和测试环境,其他环境配置可根据实际项目的开发进行自我设定。
在pom.xml文件中,编写profiles节点内容,如下所示:
<profiles>
<profile>
<id>devid>
<properties>
<profiles.active>devprofiles.active>
<nacos.address>192.168.60.72:8848nacos.address>
<nacos.discovery.group>DEFAULT_GROUPnacos.discovery.group>
<nacos.discovery.namespace>publicnacos.discovery.namespace>
<nacos.config.group>DEFAULT_GROUPnacos.config.group>
<nacos.config.namespace>publicnacos.config.namespace>
properties>
profile>
<profile>
<id>sitid>
<properties>
<profiles.active>sitprofiles.active>
<nacos.address>127.0.0.1:8848nacos.address>
<nacos.discovery.group>DEFAULT_GROUPnacos.discovery.group>
<nacos.discovery.namespace>sit-testnacos.discovery.namespace>
<nacos.config.group>DEFAULT_GROUPnacos.config.group>
<nacos.config.namespace>sit-testnacos.config.namespace>
properties>
<activation>
<activeByDefault>trueactiveByDefault>
activation>
profile>
profiles>
profile节点中有三个参数信息,这几个参数的含义如下所示:
| 节点名称 | 含义 |
|---|---|
| id | 配置环境名称(唯一) |
| properties | 指定配置属性内容,其中的名称可以随便定义 |
| activation | 设置当前profile环境是否为默认环境 |
如果在pom.xml中,未增加build的配置项,则导致 Profiles 配置项失效。
<build>
<finalName>spring-securityfinalName>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<fork>truefork>
<addResources>trueaddResources>
configuration>
plugin>
plugins>
<resources>
<resource>
<directory>src/main/resourcesdirectory>
<filtering>truefiltering>
resource>
resources>
build>
当设定好了profile配置信息后,在idea的maven栏中可以看到对应的设置信息,如下图:

此时需要在需要随环境进行配置变更的地方,使用${xxxx}进行替换。
如:修改bootstrap,yml中的配置项:
server:
port: 4201
servlet:
context-path: /api
spring:
main:
allow-bean-definition-overriding: false
profiles:
active: ${profiles.active}
application:
name: test-service
# nacos 分布式配置
cloud:
nacos:
discovery:
server-addr: ${nacos.address}
group: ${nacos.discovery.group}
namespace: ${nacos.discovery.namespace}
config:
server-addr: ${nacos.address}
group: ${nacos.config.group}
namespace: ${nacos.config.namespace}
file-extension: yml
根据idea中maven栏选择的
profiles环境信息,会将对应profiles -> profile的内容进行${xxx}替换。
如果需要打包,可以采取如下指令:
mvn clean package -Psit
yml中使用@变量名@的方式。
properties中使用${变量名}的方式配置。
上面的是公司封装的组件,改了源码,如果使用官方的,则需要按照规则来。