Intellij spring boot在gradle构建文件中展开processResources来替换属性

时间:2016-09-11 14:36:08

标签: java intellij-idea gradle spring-boot

使用gradle build命令从命令行构建时,属性字段已正确替换,但是,使用IntelliJ IDEA IDE时不会。

build.gradle

中的代码
ext {
    port = 8086
}

processResources {
    filesMatching('application.properties') {
        expand(project.properties)
    }
}

application.properties

中的代码
server.port = ${port}

4 个答案:

答案 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运行配置中所做的:

  • 添加gradle任务processResources
  • 在新的gradle任务中添加以下内容作为VM选项:-Dorg.gradle.project.buildDir=out/production。这会将gradle build dir更改为使用intellij的一个。

答案 3 :(得分:-1)

根据您的问题,我理解在intellij中您的变量${port}未映射。在Intellij中,使用gradle工具运行命令clean build以执行新构建。查看控制台日志,查找可以告诉我们可能发生的事情的消息。