【发布时间】:2021-07-19 20:37:09
【问题描述】:
我有一个非常简单的 Springboot 项目,如果运行 JUnit,它会使用本地内存 H2 数据库接入 DAO。我有 2 个配置文件,application-local.properties 和 application-TEST.properties。有一个 DataSourceProvider 类具有属性持有者,例如:
@Value("${spring.datasource.schema}")
String dbSchema;
@Value("${spring.datasource.url}")
String dbUrl;
...
在运行 SpringBoot 主类并命中端点以及运行 DAO 层 JUnit 测试时,这些属性可以很好地加载,但是当我执行 mvn clean install 时,它告诉我:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.schema' in value "${spring.datasource.schema}"
我现在已经花了一段时间,但我无法弄清楚为什么会发生这种情况?
【问题讨论】:
-
很难说没有全貌。但是您可能需要将您的配置文件(本地、测试)绑定到 pom.xml 中的构建配置。
-
您在运行 mvn 命令时是否指定了所需的配置文件?类似
mvn .... -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=local" -
您也可以一起删除配置文件,并将 application-TEST.properties 更改为 application.properties 并将其放在 src/test/resources... 或像 @AbdelghaniRoussi 一样在构建时调用您的配置文件。
-
@AbdelghaniRoussi 我工作的另一个仓库有两个不同的属性文件名,就像上面提到的一样,我不需要为弹簧配置文件传递任何参数。
标签: java spring spring-boot maven