gradle 如何使@SpringBootTest使用application.properties外部配置文件夹(项目根目录内)中的www.example.com?

31moq8wy  于 2023-01-21  发布在  Spring
关注(0)|答案(1)|浏览(154)

我有一个多模块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分开?

iyr7buue

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选项。

相关问题