SpringBoot 有一种差异化方案是,将共同的配置放入 application.properties 中,将开发环境的放入 application-dev.properties 中,将生产的配置放入
application-default.properties 中。
通过在 build.gradle 文件中指定
def profiles = 'dev'
bootRun {
args = ["--spring.profiles.active=" + profiles]
}
将变量 --spring.profiles.active 值 dev 传给 bootRun ,这样 springBoot 就知道要应用 application-dev.properties 配置和 application.properties 配置,当没有指定
profile 时,会应用 application-default.properties 和 application.properties 配置。
因此,在开发环境使用 gradle bootRun 时,由于build.gradle 文件中已经指定了 profile=dev,因此运行时可以找到 dev 配置。然而,在 IntelJ IDEA 中直接在 main 方法上右键 Debug 则找不到 dev application-dev.properties 配置,如何让它可以正常启动呢?
有几种方法:
1.在 application.properties 中加入配置:spring.profiles.active=dev。可以 work ,但是没有实际价值,因为在该差异化方案下 application.properties 本身就用来装不变的配置,很明显再起 不再是了。
2.设置 IntelJ IDEA 的运行代理. settings -> Build, Execution Deployment -> Build Tools -> gradle -> Runner,设置项里面有 Delegate IDE build/run actions to gradle,勾选它便 是。
3.设置 IntelJ IDEA -> Run -> Debug... -> Edit Configurations -> Application -> Bootstrap -> Configuration -> Program arguments 填入:
--spring.profiles.active=dev