1、使用背景
在实际项目中,运行环境通常有开发、测试、预发布、正式环境,在配置参数上各个环境可能存在差异,差异比较大的可能就是端口了。在之前我们每次发布一个环境都需要手动的修改对应的配置文件,这样做就会导致工作量的增加还容易出错。
Maven提供了一种方便解决这种问题的方案,那就是profile功能。
2、profile简介
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
profile定义的位置
(1)针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。(下面举例是这种方式)
(2)针对于特定用户的profile配置,我们可以在用户的settings.xml文件中定义profile。该文件在用户家目录下的“.m2”目录下。
(3)全局的profile配置。全局的profile是定义在Maven安装目录下的“conf/settings.xml”文件中的。
3、配置动态打包
–配置profile
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<filters>
<filter>src/main/resources/profile/dev.properties</filter>
</filters>
</build>
</profile>
<profile>
<id>test</id>
<build>
<filters>
<filter>src/main/resources/profile/test.properties</filter>
</filters>
</build>
</profile>
</profiles>
这里配置了两个环境的配置文件,默认使用dev环境,activeByDefault=true。
–配置build插件资源
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- maven profile 打包 -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
<!-- 打包排除部分文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/profile/*</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
配置到这里就可以实现动态加载配置文件了,只要启用对应的配置文件,打包就可以了。