利用Profile构建不同环境的部署包

一概述

开发测试环境多,我头一次看这项目的时候一脸懵逼,这么多环境啊。每种环境都有各自的配置参数,比如:数据库连接、远程调用的ws地址等等。如果每个环境build前手动修改这些参数,那就太麻烦了。还是以前的小项目简单,上线前改好打个包就行了。还是习惯ant那种方式。好吧,话说maven也提供了profile这种方式更好的解决。

二配置:

要在pom.xml配置不同的环境变量。如下所示:

 <!-- 配置不同环境的配置文件 -->
    <profiles>
        <!-- 可扩展beta,prod环境 -->
        <!-- add by jfqiao -->
        <profile>
            <id>env_betaa</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/betaa</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_betab</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/betab</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_betac</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/betac</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_dev</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/dev</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_interface</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/interface</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_mirror</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/mirror</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_prod</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/prod</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_rd</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/rd</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_stable</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/stable</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>env_alprod</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-env/alprod</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
        </profile>
    </profiles>
resource节点是关键,它表明了哪个目录下的配置文件。参见截图:




参见上图,各属性节点的值,用占位符"${属性名}"占位,maven在package时,会根据profile的环境自动替换这些占位符为实际属性值。

打包时,指定环境就可以了。比如:

maven package -P dev

将自动打包成dev环境的部署包(注:参数P为大写)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值