【问题标题】:how to set spring.config.location for a gradle spring boot project in Intellij IDEA community version?如何在 Intellij IDEA 社区版中为 gradle spring boot 项目设置 spring.config.location?
【发布时间】:2019-06-20 09:37:38
【问题描述】:

我想在我的 Intellij IDEA 社区版本中使用 Gradle 在 Java Spring Boot 项目中配置 spring.config.locationspring.config.additional-location。它在 IDE 中运行,单击绿色的小箭头按钮,而不是像java -jar 这样的命令行。

基本上,我们想在src/main/resources/config下添加另一个文件夹层次结构,以同时加载src/main/resources/config/a/src/main/resources/config/b/文件夹。

我们尝试过的都失败了:

  • 设置虚拟机选项-Dspring.config.location=classpath:/config/a/
  • 将其传递给终端gradle test运行
  • 在 IDE“编辑配置”的Run configuration 中设置环境变量:spring.config.location=classpath:/config/a/,classpath:/config/b/

有什么想法吗?我使用的是社区版本,因此 Enterprise 或 Ultimate 版本中没有可用的 Spring Boot 支持。

“不工作”表示gradle test无法通过。

【问题讨论】:

  • 如何从命令行运行它?它在那里工作吗?
  • 我在 gitbash 中运行(我在 Windows 上),例如 ./gradlew test -Dspring...
  • 但是设置 VM 选项必须有效 -Dspring... 与您在命令行中所做的相同
  • 是的,这很奇怪!

标签: java spring spring-boot gradle intellij-idea


【解决方案1】:

你可以通过环境变量来设置:

SPRING_CONFIG_LOCATION=classpath:/config/a/,classpath:/config/b/

请注意,“spring.config.location”是JVM参数的名称,但环境变量是用大写字母和下划线书写的。

编辑:

如果您按照描述进行配置,我不知道为什么 gradle 不会选择您的 VM 选项。如果你想使用gradle bootRun 运行它,你可以在你的build.gradle 中添加以下内容,以便在使用bootRun 运行时将VM 选项传递给应用程序:

bootRun {
  systemProperties = System.properties
}

另一方面,如果你只想通过点击绿色箭头来运行它,也许你应该在 IntelliJ 内部的Gradle settings 中配置 VM 选项。

【讨论】:

  • 我建议进行编辑,在每个路径后添加尾随 /,是的,它有效!感谢您将其设为社区 wiki。我只是不明白为什么使用 gradle 项目,Intellij IDEA 中的所有运行 only 都使用“环境变量”; spring.profiles.active! 也会发生这种情况
  • 我也在试图弄清楚为什么这不起作用,当我发现可能导致您的问题时,我会发布更新。顺便提一句。你如何在 IntelliJ 中配置 VM 选项?我认为为您的 gradle 设置 VM 选项的最佳方法是在 gradle 设置中进行设置:jetbrains.com/help/idea/gradle-settings.html。你的 IntelliiJ 中有这个吗?我不知道这是否是社区版中提供的 gradle 支持...
  • 是的,我有这些设置,但摆弄并没有给我一个解决原始帖子的方法。正如我所说,VM 选项之前已设置,但我在build.gradle 中没有bootRun{}test {} 配置。我会尝试添加它们
  • 我已经尝试过 VM 选项(例如 -Dspring... -Dspring...System.propertiestest{} 块中,它也可以工作。谢谢!但措辞可能看起来有点奇怪,它们是 vm 选项而不是系统然而,env var 方法更好,因为当我们到达 CI 管道时,在.gitlab-ci.yml,我们也必须传递它们,也许设置 env var 是唯一的方法?
  • 如果将其设置为环境变量是您的最佳选择,请使用它,何乐而不为。在我的团队中,我们还在 CI 管道和部署应用程序的服务器上使用 env 变量。在本地运行时,我们通过带有 bootRun 任务的 VM 选项设置属性(这样新开发者在运行应用程序时不必设置环境变量,一切都是自包含的)..
猜你喜欢
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多