我有一个多模块Sping Boot Gradle项目(Kotlin),其目录结构如下。
root
|- domain (Module containing entities and interfaces)
|- application (Spring boot Kotlin application)
|- src/main
|- kotlin (app sources)
|- resources
|- application.properties (default config)
|- src/test/kotlin/long/package/name/ApplicationTests.kt
|- build.gradle.kts (and also gradle folder)
|- config
|- application.properties (config to override classpath properties)
|- build.gradle.kts (and settings.gradle.kts and other gradle folder)
当我运行Application.kt
文件时,它能够拾取这个文件(使用IDE和gradle),并且它运行成功。
由于我的config文件夹在我的application文件夹之外,运行我的ApplicationTests.kt
会导致以下错误。通过IDE(IntelliJ)运行按钮和./gradlew clean test
运行时,输出相同。
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection
我希望测试能在config文件夹中找到application.properties
文件。我如何注册我的config/application.properties,以便将它与我的classpath:application.properties
分开?
1条答案
按热度按时间iyr7buue1#
默认情况下,Spring将在当前工作目录中查找名为
config
的目录,正如您所注意到的,您并不是在包含config
目录的目录中执行应用程序,您可以使用-Dspring.config.location
选项或通过环境变量SPRING_CONFIG_LOCATION
覆盖Spring查找config
文件夹的位置如果您的config目录位于
/opt/myconfigs/config
,您可以使用-Dspring.config.location=/opt/myconfigs/config
启动服务。另一种选择是使用export SPRING_CONFIG_LOCATION=/opt/myconfigs/config
并启动应用,而不使用任何其他JVM选项。