【问题标题】:Liquibase file path in Spring Configuration fileSpring 配置文件中的 Liquibase 文件路径
【发布时间】:2014-02-04 07:28:51
【问题描述】:

我的项目中有一个 Spring Configuration java 文件(即带有 @Configuration 注释)。现在我在这个类中创建一个SpringLiquibase 的bean。变更日志的主文件,即db.changelog.xml 文件位于资源文件夹中。因此,如果我使用springLiquibaseObj.setChangeLog("classpath:db.changelog.xml"); 方法,则可以直接从resources 文件夹访问它。但是,当我尝试使用
<include file="src/main/config/db/db.changelog-main.xml" />db.changelog.xml 文件访问其他 xml 文件时,我收到找不到文件夹和文件的错误。

在这里,我想将db.changelog.xml 文件保留在resources 文件夹中,并将所有其他新的变更日志文件保留在config 文件夹中,这些文件应该与resources 处于同一级别。原因是,在resources 文件夹中,有包,所以文件夹结构config/1.0.0 被认为是config/1/0/0,这是我不想要的。

有什么方法可以用我项目中的当前设置来实现这种结构(如下所示)?

  • 配置
    • 1.0.0
      • db.changelog.201412120101.xml
    • 1.1.0
    • 2.0.0
  • 资源
    • db.changelog.xml

  • 配置
    • 1.0.0
      • db.changelog.201412120101.xml
    • 1.1.0
    • 2.0.0
    • db.changelog.xml
  • 资源

【问题讨论】:

    标签: java spring maven-3 liquibase


    【解决方案1】:

    我找到了解决方案。在此之前,我已将文件夹 src/main/config 复制到 netbeans 中的 src/main/resouces 中,因此它将该文件夹作为包。所以文件夹名称 - config/db/1.0.0 更改为 config/db/1/0/0,但是当我在 resources 文件夹中创建新文件夹时,它可以正常工作并且文件夹 1.0.0 中的所有文件都可以正确访问。现在,我的文件夹结构是这样的:

    • 资源
      • 配置
        • 分贝
          • 1.0.0
            • db.changelog.201412120101.xml
          • 1.1.0
          • 2.0.0
      • db.changelog.xml

    我可以从我的 Spring 类中访问 db.changelog.xml 文件,
    springLiquibaseObj.setChangeLog("classpath:db.changelog.xml");db.changelog.xml 文件中的其他更改日志文件,
    <include file="classpath:config/db/1.0.0/db.changelog-201412120101.xml" relativeToChangelogFile="false" />

    【讨论】:

      【解决方案2】:

      Liquibase 使用应用程序类路径,因此只要配置在您的类路径中,您也应该能够加载它们。

      它们将具有相对于配置的路径,因此在您的示例中类似于“src="1.0.0/db.changelog.201312120101.xml"。

      如果 config 不在类路径中,您可以使用 relativeToChangeLog="true" 属性和 src="../../config/1.0.0/db.changelog.201412120101.xml" 但有 config liquibase 直接访问是更清洁的选择。

      【讨论】:

      • config 文件夹不在资源中,因为由于命名问题,我必须将其保留在外部。您可以在我的问题中看到上面的层次结构,我有这个层次结构,我希望可以从 Spring 配置文件和 db.changelog.xml 访问 config 文件夹。我试过给这些路径,这个relativeToChangeLog属性也不起作用。
      • 在资源之外有config应该没问题,只是配置spring的问题。 Liquibase 使用 spring 配置的 ResourceLoader 来查找更改日志文件。您是否可以将其配置为与资源一起查看配置?
      猜你喜欢
      • 2013-05-12
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 2023-03-04
      • 1970-01-01
      • 2016-02-12
      相关资源
      最近更新 更多