idea中Spring Boot项目Profile不生效的问题
开发Spring Boot项目,会根据不同环境的配置设定不同的Profile,每个Profile下对应一些资源文件。比如数据库的配置,在开发环境下有一套,测试环境有一套,生产环境也有一套。而使用Intellij Idea开发时,Maven选项卡中可以选择要使用哪一个Profile,如图所示。
需要使用哪一个环境,勾选哪一个profile,然后点击运行就好了。但是有时候会遇到一个诡异的问题,那就是勾选的dev环境,最终实际使用的却是prod配置。其实可能是因为上一次打包是通过命令行操作的,比如mvn clean package -P prod
,这样会有什么结果呢,就是这个项目已经编译完成了。通过笔者观察发现,如果先执行mvn clean,然后点击idea的运行或者debug按钮运行,那么对应项目target路径下会多出一个classes文件夹,所以猜测idea是通过classes文件夹是否存在来决定是否需要编译的。如果存在,那么直接用文件夹里面的资源文件;如果不存在,那么使用idea的Profile设置找到对应的资源文件进行编译。而如果已经命令行打包过了,那么maven已经执行到了对应的阶段,target下已经有了classes文件夹,idea也就不再执行编译了,因此即便这时候你在idea选的是dev环境,生效的也是prod的配置了。