7

我有一个带有 gradle 构建工具的 Spring Boot 项目。JDBC url、用户名和密码保存在一个属性文件中,它不是应用程序的一部分,它是一个外部属性文件,属性文件的路径取自系统属性,如下所示。

export _JAVA_OPTIONS=-DdatabaseConfiguration=db.properties

如果我使用从终端运行应用程序,它可以工作gradle bootRun,但是当我尝试从 Intellij IDEA 13 gradle 任务运行它不工作时,属性值为空。

我在运行/调试配置中尝试了 VM 选项,如下面的屏幕所示,它也不起作用

运行/调试配置

如何在 Intellij IDEA 13 gradle 任务中设置 JAVA_OPTIONS。

4

1 回答 1

3

这是因为每次您使用 Gradle 工具窗口在 IntelliJ 中启动任务时,它都会创建/覆盖该任务的启动配置。

基本上,我只需要从 Gradle 工具窗口运行一次。然后我进入失败的启动配置(显示有问题)并在 VM 选项中输入系统属性。从那以后,我需要使用 Launch Config 而不是 Gradle 工具窗口来执行任务。

更新:更好的解决方案:

  • 首选项->构建、执行、部署->构建工具-> Gradle->Gradle VM选项
  • 在那里添加您的系统属性(即-Dappengine.sdk.root=/opt/google/google-cloud-sdk/platform/appengine-java-sdk

这样做可以防止它们在 Gradle 工具窗口生成的启动配置中被覆盖/丢失。

另一件需要注意的是,使用 Gradle 工具窗口会导致命令在无法访问环境变量的情况下运行。这可能会导致依赖于这些环境变量的构建出现很多问题。

我今天用 appengine-gradle-plugin 遇到了这个问题,不得不把

-Dappengine.sdk.root=/opt/google/google-cloud-sdk/platform/appengine-java-sdk

在 VM 选项中,因为它没有看到环境变量。从命令行,它获取环境变量并且工作正常。这适用于我的 appengineRun 任务。

但它不适用于 appengineUpdate,因为这会导致另一个因缺少 env var 而导致的错误:Toolkit not found: apple.awt.CToolkit

于 2014-11-16T15:09:28.480 回答