在 bootRun 任务中传递 spring.config.location

Passing spring.config.location in bootRun task

我想将 gradle springboot 应用程序的 spring.config.additional 位置更改为 运行 本地。我的 C:/demo_class_path 中有一个属性文件,它在 jar 之外。我试图在代码中访问这些属性。 命令 java -jar demo-application.jar spring.config.additional-location=file:C:/demo_class_path 到 运行 jar wtth 参数有效,我将能够获得我需要的资源。但是我试图在 bootRun 任务中添加参数,但没有成功。

我试过下面的代码:

bootRun {
    systemProperties = [
        'spring.config.additional-location' : "file:C:/demo_class_path",
        'server.port' : 8090
    ]
}

bootRun {
    jvmArgs = [
        "-Dspring.config.additional-location=file:C:/demo_class_path/",
        "-Dserver.port=8090"
    ]
}

使用上面的代码,我可以将端口更改为 8090,但我的文件无法再从该路径中提取。 我还尝试添加 spring.config.additional-location=file:C:/demo_class _path 到 application.properties 并且那也不起作用。我想知道该位置的语法是否错误。在那种情况下,为什么 java 命令会起作用?

systemProperties 用于将通常使用 -D 传递的属性传递给运行时。

jvmArgs 用于向 JVM 传递参数。

您要使用的是 args 而不是以上任何一个。

bootRun {
  args = [
    '--spring.config.additional-location=file:C:/demo_class_path/',
    '--server.port=8090'
    ]
}

spring.config.additional-location 末尾包含 / 很重要。当它不以 / 结尾时,它被解释为文件的基本名称而不是文件位置。