使用liquibase将sqlFILE转换为XML

时间:2017-09-04 12:53:10

标签: groovy liquibase

我尝试根据我的sql文件生成XML文件。我用那个plugin。我可以在changeset中使用.each吗?为什么我因为没有单一的方法而得到错误?该插件的文档有点差......

@Grapes(
    @Grab(group='org.liquibase', module='liquibase-groovy-dsl', version='1.2.2')
)

import groovy.io.FileType
import liquibase.changelog.*

def databaseChangeLog() {

def list = []
def dir = new File(".")
dir.eachFileRecurse (FileType.FILES) { file ->
list << file
    list.each {                    
        changeSet(id: 'sql-file') {
        sqlFile(path: $list, stripComments: 'true', splitStatements: 'true', encoding: 'utf8')
}
    }
            }
} 

error

1 个答案:

答案 0 :(得分:1)

我相信你在这里至少有两个问题。

首先,在填充完成之前,不应该对list对象进行迭代。但实际上,该对象并不是非常有用,我猜你可以直接在eachFileRecurse中做你的事。

其次,我认为你在函数定义(def databaseChangeLog() {})和从插件调用databaseChangeLog委托之间混淆了一切。

所以你的代码应该是这样的:

@Grapes(
    @Grab(group='org.liquibase', module='liquibase-groovy-dsl', version='1.2.2')
)

import groovy.io.FileType
import liquibase.changelog.*

def dir = new File(".")

databaseChangeLog {
  dir.eachFileRecurse(FileType.FILES) { file ->
    changeSet(id: 'sql-file') {
      sqlFile(path: file.absolutePath, stripComments: 'true', splitStatements: 'true', encoding: 'utf8')
    }
  }
}