问题出处
今天,一个简单的demo项目为了方便,使用了spring boot搭建,功能性上考虑不仅要使用spring boot自身的profile功能,还有结合maven的profile功能来编译时即指定环境变量?问题就出在这里了,maven的profile等都配置好了,配置文件中使用${xxx}就是引用不到profile里配置的变量!
问题定位
最后找了很久,在spring-boot-starter-parent .pom里找到了答案,spring boot starter parent里build里resource配置如下
exclude明确指定了只有application.properties和application.yml才有资格使用maven里的profile里的properties配置的变量,而spring-boot-starter-parent又是spring boot 项目必须 依赖的,所有这里别无他法,只有在自己的pom文件里重写resource了,重写后得resource如下
至此问题解决就迎刃而解了
ps小结:本来问题很早就定位到是resources的问题,但是由于对resource里的includes和excludes个概念不是很清楚,导致当时只复写了includes没有复写excludes,结果白白的让问题给溜走了,这里提下excludes和includes的关系 :与是用来圈定和排除某一文件目录下的文件是否是工程资源的。如果与划定的范围存在冲突时,以划定的范围为准