我们在开发过程中,同一套代码,开发环境、生产环境会使用不同的配置文件。如果使用同一个配置文件,在部署到不同环境的时候,需要修改配置文件,然后commit,再用Jenkins构建。
下面我讲解下如何通过定义变量,实现Jenkins构建的时候,动态加载配置文件。
1. 我们在resources/config创建dev和product目录,分别添加config.properties配置文件。
在resources/config/dev/config.properties定义env.target=dev,在resources/config/product/config.properties定义env.target=product
2. 我们在spring.xml配置加载config.properties

<context:property-placeholder location="classpath*:config/${env.target}/config.properties" ignore-resource-not-found="true" />

3.我们在pom.xml添加profiles配置

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

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

4.我们在开发环境的Jenkins配置Build参数clean install -Pdev -Dmaven.test.skip=true
Build参数
我们在正式环境的Jenkins配置Build参数clean install -Pproduct -Dmaven.test.skip=true
Build参数
这样我们在Jenkins上为不同环境构建时,Jenkins便会把引用变量配置项声明为其对应环境配置项。
eg:我们在一个xml引用db.url配置项,xml代码如下:

<property name="jdbcUrl" value="${db.url}" />

当我们在Jenkins使用clean install -Pdev -Dmaven.test.skip=true构建时,Jenkins构建项目的target目录对应的xml文件,db.url便会成为dev开发环境的数据库地址。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐