对于有多个环境配置(比如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> <finalName>MyApplication</finalName> <resources> <resource> <directory>src/main/java</directory> <includes> <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失败。
