Spring STS未加载环境变量,但正在运行Maven

时间:2019-06-27 01:41:23

标签: java spring maven spring-boot environment-variables

我正在将Mac OS Mojave与Spring STS版本3.9.7配合使用。

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

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

IF NOT EXISTS (SELECT 1 
               FROM BANCO_DE_DADOS.INFORMATION_SCHEMA.COLUMNS 
               WHERE TABLE_NAME = 'MinhaTabela' AND
                     COLUMN_NAME = 'CodZona'
              ) 
BEGIN
    EXEC sp_executesql N'ALTER TABLE BANCO_DE_DADOS..MinhaTabela ADD [CodZona] [int] NULL';
END; 
GO

update BANCO_DE_DADOS..MinhaTabela
    set CodZona = 1
    where CodZona < 1 or CodZona is null;

,当我回显$ ABC_DB_UNAME printenv 时,我可以看到该值。

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

export ABC_DB_UNAME=some_username

现在,当从IDE本身运行spring sts时,它无法获取这些值,并引发

的异常。
  

拒绝访问ABC_DB_UNAME @ database_endpoint。

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

让我更感到困惑的是,当我使用以下命令通过maven运行spring应用程序时,它会拾取环境变量,并且工作正常。

spring.datasource.username=${ABC_DB_UNAME}

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

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

1 个答案:

答案 0 :(得分:1)

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

您需要在bashrc(mac)中设置$ {ABC_DB_UNAME},以使其永久保存。 或者您可以在运行应用程序时将环境变量作为参数传递。