Groovy 使用liquibase将sqlFILE转换为XML

Groovy 使用liquibase将sqlFILE转换为XML,groovy,liquibase,Groovy,Liquibase,我尝试根据我的sql文件生成XML文件。我用这个。我可以在中使用变更集。每个?为什么我会因为方法的非单一性而出错?那个插件的文档有点糟糕 @Grapes( @Grab(group='org.liquibase', module='liquibase-groovy-dsl', version='1.2.2') ) import groovy.io.FileType import liquibase.changelog.* def databaseChangeLog() { def l

我尝试根据我的sql文件生成XML文件。我用这个。我可以在
中使用
变更集
。每个
?为什么我会因为方法的非单一性而出错?那个插件的文档有点糟糕

@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')
}
    }
            }
} 
@Grapes(
@Grab(group='org.liquibase',module='liquibase-groovy-dsl',version='1.2.2')
)
导入groovy.io.FileType
导入liquibase.changelog*
def databaseChangeLog(){
def列表=[]
def dir=新文件(“.”)
dir.eachFileRecurse(FileType.FILES){file->

列出我相信你这里至少有两个问题

首先,你不应该在你的
列表
对象被填充之前就对它进行迭代。但事实上,这个对象不是很有用,我想你可以直接在每个文件递归中执行你的操作

其次,我认为您混淆了函数定义(
defdatabasechangelog(){}
)和从插件调用
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')
    }
  }
}

感谢您的回答,您有权使用iterate,但我仍然有
changeSet