前言Spring Profiles使用Maven Profiels使用Spring Profiles和 Maven Profiles结合配置来打包注意
前言Spring Profiles使用在项目开发过程中,我们离不开多环境的配置。有的同学还是分不清Maven Profiles 和 Spring Profiles的区别。
它们两者即可以独立配置, 也可以结合使用。
Maven Profiles主要用来管理maven项目不同环境的打包配置。
Spring Profiles主要用来管理spring项目不同环境的启动配置。
配置多套环境
我们在resourcs目录下配置了多套环境。
然后通过spring.profiles.active=dev/test/prod来指定运行的是哪个配置
spring:
profiles:
active: dev #表示运行application-dev.yml
这样配置比较麻烦的是,每次启动或是部署要切换环境的话,都需要手动操作。
Maven Profiels使用
在pom.xml中,配置如下:
dev dev true true test test true prod prod true
这样定义了,三套环境dev、test、prod, 我们可以在侧栏maven下清晰的看到。
接下来还需要配置一下resources来过滤一些文件
src/main/resources application*.yml src/main/resources true application-${profiles.active}.yml i18n/** application.yml logback.groovy
其中${profiles.active}与上面的profiles中的配置相对应。
接下来有两种方式来执行打包操作:
可以执行maven命令进行打包:mvn clean package -Pprod直接使用maven提供的工具:
①勾选prod
②选中clean
③选中package
④执行运行三角按钮
Spring Profiles和 Maven Profiles结合配置来打包打包完成之后,解压jar包,验证环境是否正确。
根据前面Spring Profiles和Maven Profiles的配置,修改如下配置:
spring:
profiles:
active: @profiles.active@
其中 @profiles.active@中的变量要和maven profiles中的属性保持一致。
Tips:
当我们在pom.xml中配置了profiles环境之后, 先写两个@@, 再从中间开始写profiles.active时,会有提示。
写完之后的@profiles.active@, 是可以按住ctrl点击链接到pom.xml中的相应环境配置上的。
注意总结步骤:
配置多套spring的环境(application.yml, application-dev.yml, application-prod.yml)在 pom.xml 中定义多个 profile 及其它属性在 pom.xml 中定义 resource filtering,可以控制打包之后 jar 中包含的资源文件, 以及@xxx@ 的变量替换在 application.yml 中指定 spring.profiles.active,值为 maven profile 中定义的属性@xxx@。构建时使用 mvm clean package -P 来指定 profile。
在 Intellij IDEA 中启动时, 会报错yml中的@profiles.active@,不会被配置的环境所替换。
需要先执行: mvn resources:resources
然后再次启动,即可。



