对于有多个环境配置(比如dev、test、prod等)的SpringBoot项目,其打包和启动有两种方式,第一种是把不通环境配置文件都打包,然后在启动时,通过-Dspring.profiles.active=test
或者--spring.profiles.active=test
参数指定要启动的环境;第二种是打包的时候就只打包某个环境的配置文件进去,启动时则不会通过参数指定环境(因为jar包中只有一个环境)。
本文主要介绍如何用maven只打包某个指定的环境配置,通过在pom.xml文件中配置profile和build可以实现。
新增profiles标签,与build标签同级。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<profiles>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<profile>
<!-- 开发环境 -->
<id>dev</id>
<!-- 默认打包环境为开发环境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profiles.active>dev</profiles.active>
</properties>
</profile>
</profiles>在build标签下,配置resources,指定需要打包那些文件到jar里。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24<build>
<!-- 打包后的名字(MyApplication.war) -->
<finalName>MyApplication</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<!-- 打包时要把mapper.xml也打进去! -->
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
<excludes>
<exclude>test/*</exclude>
<exclude>dev/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/${profiles.active}</directory>
</resource>
</resources>
</build>在项目的resource文件夹下新建test、dev,分别放测试环境、开发环境的配置文件,打包的时候使用指定环境命令接口:
mvn package -Ptest
或者mvn package -Pdev
。
- 如果是在IDEA中,通过IDAE中的maven插件来打包,打开IDEA的maven界面后,先勾选需要打包的profile,然后执行clean->package命令。注意:有时候因为target下内容被打开状态或者项目运行中会导致clean失败。