0. 前景
项目多数情况下,需要部署到不同环境中.使用maven打包,不做其它配置时,默认输出的jar包中,包含所有的配置文件,这样显然不太合理,当不同的生产环境中,不希望存在其它的生产环境的配置文件,可采用如下配置
1.pom文件中追加profile配置
<!--不同开发环境配置-->
<profiles>
<profile>
<id>dev</id>
<properties>
<!--pa为自定义的属性,可在application.yml文件中引用-->
<pa>dev</pa>
</properties>
<activation>
<!--不加参数默认的profile-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<pa>test</pa>
</properties>
</profile>
<profiles>
<!--节点层级为project>profiles-->
2.pom文件中build节点下追加资源过滤选项
<resources>
<!--先忽略所有配置文件,后进行需要的配置文件的追加-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/application-*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<!--此处的pa代表的是profile中自定义的属性-->
<include>**/application-${pa}.yml</include>
</includes>
</resource>
</resources>
3.application.yml文件中引用profile中定义参数
spring:
profiles:
# profile中定义的pa属性
active: @pa@
4.手动打包指定环境
mvn clean package -Dmaven.test.skip=true -Pdev
- -Dmaven.test.skip=true 表示跳过测试,可提高打包速度
- -P后面的参数为profile的名称
5.开发状态下切换不同环境
- IDEA侧边栏Maven->Profiles勾选需要的环境
- 项目目录下,终端中执行命令
mvn -DskipTests=true clean install
- 首次切换需要进行如下操作,后续调试运行无需更改
PS
- 如上配置后,直接更改spring.profiles.active无效,且项目运行会报错