我尝试根据我的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')
}
}
}
}
答案 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')
}
}
}