maven在不同的环境获取不同配置文件的方法

最近准备把正在开发的项目给分为两个环境来部署,使用jenkins进行自动构建。

把maven部署多环境相关的资料看了下,都比较难理解,于是自己摸索,找到一个比较好的办法。

首先在 src/main/resource 下建两个文件夹,具体几个看你的环境有几个,我这里是分了两个,dev和product,开发环境和正式环境。

然后将配置文件分别放入两个目录中,然后把两个环境中的配置配好

接下来编辑项目的pom文件

进行如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
......
......
<profiles>
<!-- 开发环境 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 正式环境 -->
<profile>
<id>product</id>
<properties>
<env>product</env>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
......
......
</project>

中间的properties是用来作为变量能在下文中取到的

然后在build节点中进行如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
......
......
<build>
......
......
<resources>
<!-- 此处是因为我的java目录中有一些xml文件,
如果你的项目中的java目录下没有xml文件则可以不用配 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!-- 是否替换资源中的属性 -->
<filtering>false</filtering>
</resource>
<!-- 此处的用法就是${env}会替换成你的上面选择的具体环境 -->
<resource>
<directory>src/main/resources/${env}</directory>
<!-- 是否替换资源中的属性 -->
<filtering>true</filtering>
</resource>
</resources>
......
......
</build>
......
......
</project>

最后使用maven命令进行编译打包

1
mvn clean package -Pproduct

-P为指定某个profile,后面跟上具体的profile就行了,比如上面就指定的是product的profile,如果不加,则默认是dev的profile,可以倒回上面的配置看。

接下来就会根据你的命令进行编译打包啦~

maven在不同的环境获取不同配置文件的方法

https://www.stonewu.com/post/maven-multi-environment.html

作者

StoneWu

发布于

2017-06-07

更新于

2023-02-14

许可协议

评论