VSCode运行Spring项目时忽略application-personal.yaml配置文件问题排查
哎,最近碰到个头疼的小问题,想跟大伙唠唠我的遭遇和排查思路:我在项目里维护了一个application-personal.yaml配置文件,里面写了这些内容:
app: auth: domain: myaccount.auth0.com clientId: ${AUTH0_CLIENT_ID} scope: openid profile email add:documents site:admin
而且这个文件已经加到.gitignore里避免提交了,平时用ZShell在MacBook上直接启动项目,一切都顺顺当当的,配置也能正常生效。但一旦换成VSCode的launch.json来启动项目,就感觉这个application-personal.yaml好像被彻底无视了,配置完全不生效,这可把我整懵了。
我自己琢磨了几个排查方向,说不定能帮到遇到同样问题的朋友:
先检查VSCode启动配置里的激活参数
Spring Boot默认只会加载application.yaml这类基础配置文件,要让它加载personal这个自定义环境的配置,得明确告诉它激活这个环境。你得看看launch.json里有没有在启动参数里加上--spring.profiles.active=personal。举个例子,正确的配置大概是这样:{ "configurations": [ { "type": "java", "name": "Spring Boot-你的应用名", "request": "launch", "mainClass": "com.xxx.xxx.你的启动类", "args": "--spring.profiles.active=personal" } ] }要是之前没加这个参数,VSCode启动项目时根本不会去加载
personal环境的配置文件,自然就会忽略它啦。确认环境变量在VSCode里是否正常加载
你的配置里用到了${AUTH0_CLIENT_ID}这个环境变量,ZShell里能正常运行是因为终端已经设置好这个变量了,但VSCode的启动环境可能没继承到终端的环境变量。这里有两个小办法可以试试:- 从终端用
code .命令打开VSCode,这样VSCode会直接继承终端的所有环境变量; - 直接在
launch.json里手动指定这个环境变量,比如:{ "configurations": [ { "type": "java", "name": "Spring Boot-你的应用名", "request": "launch", "mainClass": "com.xxx.xxx.你的启动类", "args": "--spring.profiles.active=personal", "env": { "AUTH0_CLIENT_ID": "你的实际ClientId值" } } ] }
- 从终端用
检查配置文件的位置和优先级
先确认application-personal.yaml是不是放在Spring Boot能识别的目录下,比如src/main/resources或者src/main/resources/config文件夹里,要是放错了位置,Spring可找不到它。另外,也可以排查下项目里有没有其他优先级更高的配置文件,比如application.yaml里是不是直接覆盖了app.auth相关的参数,导致personal里的配置没生效。更新VSCode的Java相关插件
有时候旧版本的VSCode Java插件(比如Extension Pack for Java、Spring Boot Extension Pack)可能存在配置加载的小Bug,你可以试试把这些插件更新到最新版本,然后重启VSCode再启动项目,说不定问题就迎刃而解了。
内容来源于stack exchange

