maven实战之——如何实现多环境动态打包?动态选择或者配置属性文件的内容?

需求:

在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。

maven提供了一种方便的解决这种问题的方案,就是profile功能。

实现效果展示

  • 开发环境打包:
mvn clean package -Pdev

这里写图片描述

  • 测试环境打包
mvn clean package -Pbeta

这里写图片描述

  • 生产环境打包
mvn clean package -Prelease

这里写图片描述

如何实现

应用到的技术点

maven提供的profile,filter

基本技术原理

其实,从本质上来说,就是采用了模板和占位符替换的基本技术。用一句話來概括, 就是字符的替換。

注意事项

application.xml文件中不能出现@关键字,就算你注释了也不行。当出现@了,之后的所有环境变量将不会被注入

源码展示

pom文件中的filter配置

<build>
        <finalName>spring-mybatis</finalName>
        <!-- 定义了变量配置文件的地址 -->
        <filters>
            <filter>${project.basedir}/src/main/resources/filters/application-${env}.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

filters 的意义在于,表明使用该文件(s)中定义的值來替換目標字符。(From whom)

resources/resource ,表示替換會對在哪個目錄下的文件作用。 (To whom)

大家可能也會對${env} 有疑问。這個就是动态配置的关键之一。”profiles”

pom中的profile配置
<profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <!-- 设置默认激活这个配置 -->
                <activeByDefault>false</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 发布环境 -->
            <id>release</id>
            <properties>
                <env>release</env>
            </properties>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>beta</id>
            <properties>
                <env>beta</env>
            </properties>
            <activation>
                <!-- 设置默认激活这个配置 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>

需要进行动态配置的Properties文件(模板)

datasource.jdbcUrl=${env.datasource.jdbcUrl}
datasource.username=${env.datasource.username}
datasource.password=${env.datasource.password}

源码下载

在本机装有git的情况下:
运行

git clone git@github.com:bill4j/maven-showcase.git

如果还没有git,请访问我的GitHub:

如何运行源码中的工程?

准备工作:数据库脚本准备

这里写图片描述
使用MySQL建立3个环境的数据库,分别执行以上脚本

步骤一:maven运行打包命令

  • 开发环境打包:
mvn clean package -Pdev

这里写图片描述
- 测试环境打包

mvn clean package -Pbeta
  • 生产环境打包
    这里写图片描述
mvn clean package -Prelease

这里写图片描述
-P 就是選擇對應在pom中聲明了的profile,想要使用哪个环境,就在-P后边写你要使用的环境即可

步骤二:IDE中配置tomcat

这里写图片描述

步骤三:启动tomcat,并部署war包

最后一步:访问应用

这里写图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值