【问题标题】:Intellij spring boot expand processResources in gradle build file to replace propertiesIntellij Spring Boot 扩展 gradle 构建文件中的 processResources 以替换属性
【发布时间】:2017-01-19 02:44:53
【问题描述】:

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

build.gradle中的代码

ext {
    port = 8086
}

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

application.properties中的代码

server.port = ${port}

【问题讨论】:

  • 您的问题解决了吗?我也有同样的问题,需要在“DEBUG”中运行
  • it's not when using IntelliJ IDEA IDE

标签: java intellij-idea gradle spring-boot


【解决方案1】:

当您通过单击“运行”按钮在 IntelliJ 中运行 Spring Boot 应用程序时,它会以常规 java 命令启动,并且不会实际运行任何 gradle 任务。因此,任务processResources 没有运行。

您想要的是通过调用 gradle 任务 bootRun 在 IntelliJ 中运行您的项目。在 IntelliJ 的 gradle 工具窗口中点击你的项目展开它,然后展开Tasks,展开application,双击bootRun

您现在应该在 IntelliJ 的控制台中看到您的应用程序启动了,就好像您使用 gradle bootRun 从命令行运行它一样。

编辑

如果您希望保留在 IntelliJ 中单击运行/调试按钮的功能,您可以将 IDE 构建/运行操作委托给 gradle,方法是在设置 | 下选择此选项。构建、执行、部署 |构建工具 |摇篮 |亚军。

【讨论】:

  • 这个是不能点击“调试”按钮的,否则会失去java in-Intellij的调试体验。你有解决方案吗?
  • 是的。对此还有另一种解决方案。请参阅我的更新答案。
【解决方案2】:

我有同样的问题 - 真的很烦人。到目前为止我发现的最佳解决方案是在 IntelliJ 中保存运行/调试配置,然后编辑配置,指定应在启动前执行 gradle 任务 processResources。

相关话题: how to skip placeholder value if not supplied in properties file in spring boot?

【讨论】:

  • 从 IntelliJ 2017.2 和/或 gradle 4 开始,这不再起作用。 Gradle 4 为不同的语言创建不同的输出目录。因此,IntelliJ 决定 IDE 内部编译器和构建系统将不再使用与 gradle 相同的输出目录。现在也无法在 IntelliJ 中自定义资源输出目录(如果可以,将其自定义为与 gradle 输出目录相同可以解决问题)。见:youtrack.jetbrains.com/issue/IDEA-175172#comment=27-2330350
【解决方案3】:

我也有同样的问题。这是我在 intellij 运行配置中所做的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 2016-01-20
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多