java - Spring STS不加载环境变量但运行maven可以工作

标签 java spring maven spring-boot environment-variables

我正在使用 Mac OS Mojave 和 Spring STS 版本 3.9.7。

因此,我尝试将一些环境变量(例如数据库用户名和密码)加载到我的 application.properties 文件中,但 Spring 无法将它们加载到。

我使用此命令来设置用户名环境变量:

export ABC_DB_UNAME=some_username

当我echo $ABC_DB_UNAMEprintenv时,我可以看到该值。

在我的 application.properties 文件中,我将用户名设置如下:

spring.datasource.username=${ABC_DB_UNAME}

现在,当从 IDE 本身运行我的 spring sts 时,它无法获取这些值,并且会抛出一个异常,

access is denied for ABC_DB_UNAME@database_endpoint.

它清楚地表明 spring sts 没有获取我的环境变量。

让我更困惑的是,当我使用下面的命令通过 maven 运行 spring 应用程序时,它会获取环境变量并且工作得很好。

mvn spring-boot:run

但是使用 mvn 命令我不知道如何让 IDE 触发断点供我调试。

编辑:测试并尝试使用代码 System.getenv("ABC_DB_UNAME") 和 System.getProperty("ABC_DB_UNAME") 打印环境变量也会返回 null,但 maven 仍然有效。

最佳答案

我认为环境变量是在终端中临时设置的。因此,mvn spring-boot:run 有效。您可以在不同的终端中运行它,它应该会失败

您需要在 bashrc (mac) 中设置 ${ABC_DB_UNAME} 才能永久保留它。 或者您可以在运行应用程序期间将环境变量作为参数传递。

关于java - Spring STS不加载环境变量但运行maven可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56782840/

相关文章:

java - 为什么原型(prototype)作用域与 Stateful bean 一起使用?

java - 如何在使用 maven 构建的 war 中包含系统依赖项

java - Maven:无法找到或加载主类

java - 瓶啤酒

java - 如何在 Java 中使用 OpenCV 检测图像中的线条

java - 如何检查 JOptionPane 输入是否包含 int 或 double 以及 2 个 if 语句并已转换?

java - 使用 jpa 在两个日期列之间搜索

spring - 必须在 Spring Boot 应用程序中设置 UserDetailsS​​ervice 错误

java - @PreUpdate 更新时不保存父对象

java - 是否可以在命令行中在 Maven Deploy 中传递密码?