Groovy 使用liquibase将sqlFILE转换为XML
我尝试根据我的sql文件生成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
中使用变更集
。每个
?为什么我会因为方法的非单一性而出错?那个插件的文档有点糟糕
@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