环境配置: spring profile 与 maven profile

在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。  
maven提供了一种方便的解决这种问题的方案,就是profile功能。

profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

 profile定义的位置

(1) 针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。(下面举例是这种方式)

(2)

(3)

SpringProfile中,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下除了<excludes>标签下的文件编译进classpath下。

猜你喜欢

转载自blog.csdn.net/qq_35070673/article/details/79970502