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

时间:2019-01-16 16:10:49

标签: spring spring-boot gradle spring-config

我想更改gradle springboot应用程序的spring.config.additional-location使其在本地运行。我的C:/demo_class_path中有一个属性文件,它位于jar之外。我试图在代码中访问这些属性。 运行jar wtth参数的命令java -jar demo-application.jar spring.config.additional-location=file:C:/demo_class_path可以正常工作,我将能够获得所需的资源。但是我试图在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命令可以工作?

1 个答案:

答案 0 :(得分:1)

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

jvmArgs用于将参数传递给JVM。

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

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

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