IDEA+Maven_POM.xml的Profile来动态切换配置信息
IDEA+Maven_POM.xml的Profile来动态切换配置信息
前言:
通常开发人员,需要面对不同的编码环境, 如果频繁修改配置文件的话,可能会忙中出错。
例如环境有: 开发环境、测试环境、生产环境。
使用Maven的打包插件可以进行动态切换使用那些配置文件进行打包或者运行!
1.0 build节点里面重要节点介绍
在
maven的pom.xml文件中build节点用来管理执行maven声明周期的(也就是打包)。
1.1 <finalName>节点
表示最终打包完成后, 包的名称
1.2 <plugins>节点 (重要点)
用来设置执行打包命令插件、资源文件的字符集等 (例如也
maven-clean-plugin(清理)、maven-compiler-plugin(编译)、maven-resources-plugin(不同目的显式更改编码), 等等自行网上搜索。 )
1.3 resources节点
1.3.1 directory节点(指定配置文件目录)
默认情况下,Maven将在
src / main / resources下查找项目的资源,但是,您的所有资源可能都不在
src / main / resources中。因此,您必须通过将以下内容添加到POM中来指定这些目录。
<build>
...
<resources>
<resource>
<directory>资源文件夹路径(假设你resources文件夹放在了src下面 就写成 src/resources)</directory>
</resource>
</resources>
...
</build>
此外,可以通过添加多个
<resource>节点来拥有多个目录:
1.3.2 filtering节点
进行变量过滤, 变量可以包含在您的资源中。这些变量用
$ {...}分隔符表示,可以来自系统属性,项目属性,过滤器资源和命令行。
例如,如果有一个配置文件资源
src / main / resources / application.yml包含
server:
port: ${port}
pom文件
<project>
...
<port>8888</port>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
...
</resources>
...
</build>
...
</project>
这样直接打包的换, 打包好的
application.yml配置文件会原样输出${port}
但是,如果将
<filtering>标记添加到POM并将其设置为true,如下所示:
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
这样打包完成后application.yml配置文件中的端口就会是8888
1.3.3 includes节点与excludes节点
指定资源目录时,可能不会使用该目录中的每个文件。因此,我们可能只需要指定要包含的文件或指定要排除的文件。
要包含资源,我们只需要添加一个
<includes>节点, 排除添加<excludes>节点
<build>
......
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.yml</include>
</includes>
<excludes>
<exclude>logback-spring.xml</exclude>
</excludes>
<filtering>true</filtering>
</resource>
</resources>
</build>
上面节点说明: 将
resources所有后缀带yml的进行打包入jar包 , 排除logback-spring.xml不进行打包入jar包。
includes与excludes节点可以配置多个。节点就介绍到这, 下面进行一个Demo配置入门。
2.0 IDEA配置SpringBoot配合Maven_Profiles动态切换配置文件
2.1 先准备好3个环境的配置文件
在resources配置文件目录下准备3个文件:
application-dev.yml、application-test.yml、application-pro.yml内容就只是端口不同:
#-dev.yml开发端口
server:
port: 18888
#-test.yml测试环境端口
server:
port: 8080
#-pro.yml生产环境端口
server:
port: 80
2.2 pom文件配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--动态切换配置文件 resources-plugin插件是必选的-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<!--使用默认的变量分割符即${}-->
<configuration>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<!--打包该目录下的 application.yml 和先排除掉所以的环境配置文件-->
<directory>src/main/resources</directory>
<includes>
<include>application.yml</include>
</includes>
<excludes>
<exclude>application-pro.yml</exclude>
<exclude>application-dev.yml</exclude>
<exclude>application-test.yml</exclude>
</excludes>
<!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 -->
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 打包导入选择的环境文件${profiles.active} 优先级比排除上面排除大 -->
<includes>
<include>application-${profiles.active}.yml</include>
</includes>
<!-- 不进行过滤 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>pro</id>
<properties>
<profiles.active>pro</profiles.active>
</properties>
</profile>
</profiles>
<profiles.active>是自定义, 但是配置环境的3个名称节点都需要相同
然后在主application.yml文件中加上
spring:
application:
name: SpringBootDemo
profiles:
active: ${profiles.active} #取其变量加载配置文件
2.3 在工具IDEA中选择使用那个配置文件
选择那个文件来进行启动与打包
2.4 选择了dev启动项目与进行打包

2.5 选择了pro启动项目与进行打包

如果出现了确定发现使用的不是选择的配置类, 则执行清理
target编译过的文件夹或者执行maven_clean命令清理,在重复进行操作。
1
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)