如何在执行 jar 时从外部配置文件访问类路径
How to get access from external config file to classpath in executing jar
我开发 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
自定义包含数据库和授权服务器连接等设置。
我开发 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
自定义包含数据库和授权服务器连接等设置。