maven环境隔离

引言

在Maven项目开发中,一般都会有四种环境情形: 

1. 本地环境(Local) 
2. 开发环境(Dev) 
3. 测试环境(Beta) 
4. 发布环境(Prod)

 
在不同环境中,总会遇到FTP服务器配置不一样,数据库配置不一样等一系列问题,这样Maven的环境隔离将有助于我们轻松切换不同配置环境。

配置预览

maven环境隔离解决的实际问题

  • 避免人工修改犯错(忘了修改线上、线下地址)
  • 轻松分环境编译、打包、部署

maven环境隔离的配置及原理

pom.xml 中 build节点上增加如下配置

<resources>
    <resource> <!--配置文件路径 -->
    <directory>src/main/resources</directory> <!--这里对应项目存放配置文件的目录--> <!--开启filtering功能 -->
    <filtering>true</filtering>
    <excludes>
        <exclude>application-local.properties</exclude>
        <exclude>application-dev.properties</exclude>
        <exclude>application-prod.properties</exclude>
        <exclude>application-test.properties</exclude>
    </excludes>
    </resource>

    <resource> <!--配置文件路径 -->
    <directory>src/main/resources</directory> <!--这里对应项目存放配置文件的目录--> <!--开启filtering功能 -->
    <filtering>true</filtering>
    <includes>
        <include>application-${activatedProperties}.properties</include>
        <include>application.properties</include>
    </includes>
    </resource>
</resources>

其中 ${activatedProperties} 对应下述配置节点中的  activatedProperties 属性值

接着在 pom.xml 中增加 profiles 节点

    <profiles>
        <profile>
            <id>local</id>
            <properties> <!-- 环境标识,需要与配置文件的名称相对应 -->
                <activatedProperties>local</activatedProperties>
            </properties>
            <activation> <!-- 默认环境 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>dev</id>
            <properties> <!-- 环境标识,需要与配置文件的名称相对应 -->
                <activatedProperties>dev</activatedProperties>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <activatedProperties>test</activatedProperties>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <activatedProperties>prod</activatedProperties>
            </properties>
        </profile>
    </profiles>

其中 activeByDefault 是设置默认环境

最后在 application.properties 中配置 @activatedProperties@

spring.profiles.active=@activatedProperties@

配置完成后可以在 idea右侧的 Maven Projects 中就可以看到环境已经生成了并默认 local环境

一个简单的环境隔离就OK了。

测试:

目前我们选择 prod 环境,把项目运行起来, 看到 【target -> classes】 是我们设置的prod环境 application-prod.properties

原文地址:https://www.cnblogs.com/zyulike/p/13572654.html