Maven实现多环境切换
2020-10-20 本文已影响0人
renyjenny
不同环境需要不同的配置,利用Maven的profile
标签,即可简单快捷地实现多环境切换。
使用步骤
资源配置文件
在resources文件下添加资源配置文件
db.properties
driver=${driver}
url=${url}
username=${username}
password=${password}
env.properties
test.host=${test.host}
查看编译后的文件,在target/classes下,这时候${}还没有取到值。
image.png
配置文件
在src/main文件夹下新建文件夹filters,新建文件
- filter-test.properties
文件中配置环境变量参数
# ip
test.host=https://www.tianqiapi.com/api/
# 数据库
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///campus_terminal?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username=root
password=123
resource
配置
<build>
<resources>
<resource>
<!-- 开启资源过滤,让Maven能解析资源文件中的Maven属性 -->
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<!-- 指定使用的 filter文件 -->
<filters>
<filter>src/main/filters/filter-test.properties</filter>
</filters>
</build>
现在再编译,就可以看到${}变量已经能取到值了。
image.png
多环境配置
要配置多环境,则需要在pom.xml文件中使用profile
配置环境
<profiles>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
<activation>
<!-- 默认使用此环境 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<env>product</env>
</properties>
</profile>
</profiles>
id
是环境的唯一标识,这里定义了三个环境test、dev与product。再使用${env}修改之前filter
里配置的文件名`。
<!-- 指定使用的 filter文件 -->
<filters>
<filter>src/main/filters/filter-${env}.properties</filter>
</filters>
然后添加dev与product的配置文件。
image.png
切换环境
如上步骤,就已经实现多环境配置了。要切换环境,有两种方法。
一个是打开idea的maven面板,可以看到已经有profiles的选项,默认选中test。
或者通过命令行,使用-P参数加上
profile
中定义的id
来指定环境资源。mvn clean test -Ptest
Jenkins配置
如果使用Jenkins来构建项目,可以通过参数化配置,指定运行环境。
参数化配置
image.png前置步骤
image.png目标输入
clean test -P%env%
,这里的%env%
即之前参数化配置的环境,也对应pom.xml文件中的build信息。