Spring配置文件中的Liquibase文件路径

时间:2014-02-04 07:28:51

标签: java spring maven-3 liquibase

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

2 个答案:

答案 0 :(得分:4)

我找到了解决方法。在此之前,我已将文件夹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文件的其他更改日志文件as <include file="classpath:config/db/1.0.0/db.changelog-201412120101.xml" relativeToChangelogFile="false" />

答案 1 :(得分:0)

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

他们会有一个相对于配置的路径,所以在你的例子中就像“src =”1.0.0 / db.changelog.201312120101.xml“。

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