使用gradle build
命令从命令行构建时,属性字段已正确替换,但是,使用IntelliJ IDEA IDE
时不会。
build.gradle
ext {
port = 8086
}
processResources {
filesMatching('application.properties') {
expand(project.properties)
}
}
application.properties
server.port = ${port}
答案 0 :(得分:3)
当您通过单击“运行”按钮在IntelliJ中运行Spring Boot应用程序时,它将以常规java命令启动,并且实际上不会运行任何gradle任务。因此,任务processResources
不会运行。
您想要的是通过调用gradle任务bootRun
在IntelliJ中运行项目。在IntelliJ的gradle工具窗口中,单击您的项目以展开它,然后展开Tasks
,展开application
,双击bootRun
。
您现在应该在IntelliJ的控制台中看到您的应用程序启动就像您使用gradle bootRun
从命令行运行它一样。
修改强>
如果您希望能够在IntelliJ中单击运行/调试按钮,则可以通过在“设置”|“设置”下选择此选项来将IDE生成/运行操作委派给gradle 。构建,Exectuion,部署|构建工具| Gradle |转轮。
答案 1 :(得分:0)
我有同样的问题 - 真烦人。到目前为止,我发现的最佳解决方案是在IntelliJ中保存运行/调试配置,然后编辑配置,指定在启动之前应该执行gradle任务processResources。
相关主题: how to skip placeholder value if not supplied in properties file in spring boot?
答案 2 :(得分:0)
我也有同样的问题。这是我在intellij运行配置中所做的:
processResources
-Dorg.gradle.project.buildDir=out/production
。这会将gradle build dir更改为使用intellij的一个。答案 3 :(得分:-1)
根据您的问题,我理解在intellij中您的变量${port}
未映射。在Intellij中,使用gradle工具运行命令clean build
以执行新构建。查看控制台日志,查找可以告诉我们可能发生的事情的消息。