maven 生产环境、开发环境替换配置文件打包

需求

一个很常见的需求,在开发和生产环境打包时的配置文件不同,比如数据库连接地址,都在project-config.properties文件中,在测试环境中jdbc.url=localhost:3306/xx,而在正式环境中就是jdbc.url=19.80.90.10/xx,类似这样。

资源过滤

maven提供了资源过滤功能,来替换文件中的变量,基于此,我们能实现配置替换。基本思路是分别创建配置文件,比如dev/project-configure.properties和pro/project-configure.properties,在编译时用这两个文件中的值,替换src/main/resources底下的project-configure.properties。

具体过程

在工程根目录创建filters文件夹,在其中,分别创建project-config.properties文件,顾名思义,dev下边放的是开发环境配置,pro(duction)是生产环境配置,

dev中的project-config.properties

jdbc.url=localhost:3306/xx

pro中的project-config.properties

jdbc.url=19.80.90.10/xx

src/main/resources下的project-config.properties

jdbc.url=${jdbc.url}

在项目的pom.xml中配置

这里配置了两个profile,dev和pro,过滤器文件分别使用对应的project-config.properties,并且dev是默认启用。

<profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <filters>
                    <filter>${basedir}/filters/dev/project-config.properties</filter>
                </filters>
            </build>
        </profile>

        <profile>
            <!-- 生产环境 -->
            <id>pro</id>
            <build>
                <filters>
                    <filter>${basedir}/filters/pro/project-config.properties</filter>
                </filters>
            </build>
        </profile>
    </profiles>

另外build中的resource需要将properties的过滤改为true

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

    </build>

这样maven在编译时,用 filters/dev(pro)/project-configure.properties中的键值对,替换src/main/resources下所有的properties文件进行进行过滤替换。
总体效果图
这里写图片描述

这里写图片描述

疑问

当时配置后,有个疑问,平常开发时,比如摁ctrl+F9编译,也能自动替换配置吗?试验后得知,是的。因为在编译时也执行了maven编译命令,执行maven,肯定用到pom.xml所以profile生效替换了配置。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值