当前位置: 首页 > 知识库问答 >
问题:

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

赖翰
2023-03-14

我开发了Spring Boot 2.2.1应用程序。我有多个配置文件(应用程序-{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外部)应用程序无法访问changelog。因此,yml liquibase不能应用迁移。如何解决这个问题,让liquibase在这样的环境下工作?

共有1个答案

韩照
2023-03-14

我找到了这个问题的解决方案,我已经在其中的两个文件上分离了applicatiom-prod.ymlapplicatiom-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

定义包含数据库和授权服务器连接等设置。

 类似资料:
  • 问题内容: 我想做一些我认为并不困难的事情。 我有一个要打包为jar的应用程序,因为我有大约30个依赖项,并且我希望能够部署一个文件。 我有一些配置文件-一个属性文件和一个spring配置文件,以及我的log4 props文件- 我想在jar外部使用。我想我希望,如果我将它们与jar放在同一目录中,它将在运行时找到它们,但事实并非如此。 在开发过程中,我将这些文件放在eclipse项目的类路径的根

  • 我有一个使用第三方jar的Spring启动应用程序。此jar需要一个xml配置文件,该文件必须由客户端在运行时(单独)提供,并且不能预打包。第三方lib使用以下顺序加载该文件(Is和空检查): 我不能更改lib加载文件的方式(例如使用Spring的资源加载),所以它必须在类路径上。因此,我似乎失去了像java-jarmy-spring-boot-app.jar一样执行它的可能性,因为选项阻止添加任

  • 问题内容: 我正在使用FlatPack来分析和加载平面文件中的数据。这需要加载一个配置文件,该文件存储平面文件各列的映射。 我有一个常量来定义映射文件的位置: 我有一个parse(File dataFile)方法实际上执行解析: 当我罐子了一切并运行它作为一个罐子-它炸弹出来了。该文件虽然在罐子里。 我该怎么办? 我已经看过这个问题以及关于访问jars中文件的问题,他们都建议暂时提取文件。我不想这

  • 我有一个标准的Spring靴项目。 我有一个/src/main/resources文件夹,其中有几个配置文件。 我怎样才能用Gradle做到这一点呢?

  • 运行maven命令: mvn Flyway:repair-flyway.config File=MyFlywayConfig.properties 返回错误: 有没有人知道如何在外部配置的基础上完成flyway插件的目标?

  • 问题内容: 我有一个要求,要将所有logback配置都放在war文件之外。目前,我已将配置文件(logback.xml)放在类路径上。我正在使用JBOSS EAP Web应用程序服务器,请提出如何实现相同的建议。 问题答案: 进入jboss启动/运行脚本并添加以下选项: 的java -Dlogback.configurationFile = /路径/到/ config.xml中 chapters.