【发布时间】:2021-09-05 09:06:26
【问题描述】:
在 Spring Boot 应用程序中,我想将一些环境变量从 env 文件(可用于不同环境)传递给 application.yml。我们决定不为不同的环境使用 spring 配置文件,因为使用 .env 文件可以使我们以后更容易迁移到云。在 application.yml 中定义这些变量如下:
datasource:
driverClassName: org.mariadb.jdbc.Driver
username: "${SPRING_DATASOURCE_USERNAME}"
password: "${SPRING_DATASOURCE_PASSWORD}"
此外,我使用以下命令导出了 .env 文件中的所有环境变量,其中还包括 ${SPRING_DATASOURCE_USERNAME} 和 ${SPRING_DATASOURCE_PASSWORD}:
export $(grep -v '^#' .env | xargs -d '\n')
运行时
./gradlew test
我收到以下错误:
Missing property (SPRING_DATASOURCE_USERNAME) for Groovy template expansion.
问题是gradle wrapper没有获取系统环境变量或者导出的环境变量。有没有办法使用 .env 文件解决这个问题?任何提示表示赞赏!
【问题讨论】:
-
不能用
@TestPropertySource吗? -
添加属性文件没有帮助。我需要添加任何 gradle 配置吗?是否可以在不更改任何代码的情况下做到这一点?
-
.env 文件的格式是什么,它们是如何添加到 Spring 环境中的?
标签: spring spring-boot gradle environment-variables gradlew