在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。
maven提供了一种方便的解决这种问题的方案,就是profile功能。
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
profile定义的位置
(1) 针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。(下面举例是这种方式)
(2)
(3)
Spring的Profile中,Profile存在两种状态,一种为默认加载的profile(spring.profiles.default),一种为指定激活的profile(spring.profiles.active)。如果程序未指定active状态的profile,那么执行default状态的profile,如果两种状态都指定,则优先执行或选择active状态的profile。
maven的优点在于项目构建,通过命令来构建不同环境的包,
spring则是通过初始化参数和设置环境变量来设置激活的profile
pom.xml配置
1、profile配置
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<!-- package.environment 为自己定义的名字-->
<package.environment>dev</package.environment>
</properties>
<!-- 默认激活该profile节点-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--测试环境-->
<profile>
<id>pre</id>
<properties>
<package.environment>pre</package.environment>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>pro</id>
<properties>
<package.environment>pro</package.environment>
</properties>
</profile>
</profiles>
2、resources配置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>environment/dev/**</exclude>
<exclude>environment/pre/**</exclude>
<exclude>environment/pro/**</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/environment/${package.environment}</directory>
</resource>
</resources>
</build>
以上配置会将src/main/resources下除了标签下的文件编译进classpath下。
文件结构
作者:alewu
来源:CSDN
原文:https://blog.csdn.net/qq_35070673/article/details/79970502
版权声明:本文为博主原创文章,转载请附上博文链接!