sqlFILE 到 XML 与 liquibase

sqlFILE to XML with liquibase

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

@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')
}
    }
            }
} 

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

首先,您不应该在 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')
    }
  }
}