gpt4 book ai didi

java - 如何在执行 jar 时从外部配置文件访问类路径

转载 作者:行者123 更新时间:2023-12-01 16:18:56 25 4
gpt4 key购买 nike

我开发 Spring Boot 2.2.1 应用程序。我有多个配置文件(application-{provile}.yml)并使用 liquibase 自动迁移数据库。一切都工作得几乎很好(如果可以这样说 Java,哈哈)。但在生产环境中我必须将配置文件作为外部 yml 文件从远处传递

我正在执行以下 shell 来启动应用程序:

java.exe -jar orgstructure-service-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod -Dspring.config.location=./application-prod.yml

应用程序正在启动,并且配置正确应用(除了 liquibase 之外)。 Liquibase 使用类路径进行变更日志配置:

  liquibase:
change-log: classpath:db/changelog/changelog.xml

但是无法从外部(jar 外部)application.yml 访问更改日志,因此 liquibase 无法应用迁移。如何解决这个问题并使liquibase能够在这样的环境下工作?

最佳答案

我找到了这个问题的解决方案,我将 applicatiom-prod.yml 分成了两个文件,其中 applicatiom-prod.yml 存储在 ./src/main/resources 目录中,并且打包在 jar 中,第二个文件我调用了 application-customization.yml,它与 jar 文件分开,但位于同一目录中。 application-prod.yml 包含秒数,如下所示:

  spring:
profiles:
active: prod
include:
customization
liquibase:
change-log: classpath:db/changelog/changelog.xml

logging:
level:
root: INFO
org.springframework: INFO
org.hibernate.SQL: INFO
org.hibernate.type: INFO
liquibase: INFO

自定义保存数据库和授权服务器连接等设置。

关于java - 如何在执行 jar 时从外部配置文件访问类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62323415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com