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

标签 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 to 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 末尾包含 / 非常重要。当它不以 / 结尾时,它会被解释为文件的基本名称而不是文件位置。

关于spring - 在 bootRun 任务中传递 spring.config.location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54221060/

相关文章:

java - Hibernate OpenSessionInViewFilter 过早关闭 session ?

spring - java.lang.OutOfMemoryError : PermGen space with tomcat7 windows service 错误

java - 在简单的 JPA 存储库中哪里可以找到数据库表对象

java - 面临从基于 Spring Boot 的 Java 应用程序读取 Amazon SQS 队列的问题

机器人工作室。 build,gradle - 导入项目后找不到属性

file - 如何在 Gradle 自定义任务中初始化 FileTree 字段?

spring - 微服务和 Spring Security OAuth2

java - 为什么 Spring 3 @Component 名称在具有不同包时会发生冲突?

java - Spring 中的表单处理

gradle - 为什么Gradle在我的插件中找错了位置?