Maven多环境配置实战 Filter

目前在开发一个wap项目,主要有开发、测试和最终部署上线几个阶段,每个阶段对配置(数据库、日志)都有不同的设置。以前都是以开发环境为主,在测试和部署上线时由部署工程师负责修改配置并上线。但是公司并非都有一个项目,我们也不是只负责一个项目,这样的工作方式导致每每上线时大家都心惊胆颤,实在忍受不了折磨,决定研究下maven下如何解决这个问题。找到方案后,不敢独享,将结果向大家介绍下。思路: 
几个环境中主要的不同可以概括为数据库配置和log日志路径配置以及外部依赖的接口配置不一样,但是我们这里简单起见,假设只考虑数据库配置。 
这样的话,如果能实现在生成不同的发布包时对资源进行不同的替换就可以达到目的了。经过研究maven,确定了最终方案。最终方案: 
首先需要在pom文件中确定filter和要filter的资源,这是通过在build节点中添加filter和resource来实现的,示例如下:

pom.xml内容:

    <build>
        <filters>
            <filter>src/main/filters/filter-${env}.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    <profiles>
        <profile>
            <id>develop</id>
            <properties>
                <env>develop</env>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <env>test</env>
            </properties>
        </profile>
        <profile>
            <id>product</id>
            <properties>
                <env>product</env>
            </properties>
        </profile>
    </profiles>

src/main/filters/filter-develop.properties内容:

jdbc.url=jdbc:mysql://localhost:3306/dev?characterEncoding=utf-8
jdbc.username=rootdev
jdbc.password=rootdev

src/main/filters/filter-test.properties内容:

jdbc.url=jdbc:mysql://111.111.111.111:3306/test?characterEncoding=utf-8
jdbc.username=roottest
jdbc.password=roottest

src/main/filters/filter-product.properties内容:

jdbc.url=jdbc:mysql://121.121.121.121:3306/product?characterEncoding=utf-8
jdbc.username=rootproduct
jdbc.password=rootproduct

src/main/resources/jdbc.properties内容:

url=${jdbc.url}
username=${jdbc.username}
password=${jdbc.password}

maven命令:

mvn package -Pproduct
mvn package -Ptest  
mvn package -Pdevelop
运行打包命令maven会将src/main/filters/filter-${env}.properties对应文件里的key的值替换到src/main/resources下所有文件

在jenkins可以配三个项目,每个项目的参数都不同就可以。
最终实现开发、测试、生产环境的地址更换。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值