2017-09-04 84 views
0

我嘗試根據我的sql文件生成XML文件。我用那個plugin。我可以在.each中使用changeset嗎?爲什麼我因爲沒有方法的特性而出錯?該插件的文檔是有點可憐......sqlFILE到liquibase的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') 
} 
    } 
      } 
} 

error

回答

1

我相信你至少有2個問題在這裏。

首先,在完成填充之前,您不應該迭代list對象。但的確,該對象不是非常有用,我想你可以直接在每個FileRecurse中做你的事情。其次,我認爲你已經在功能定義(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') 
    } 
    } 
} 
+0

謝謝回答,您有權使用迭代,但我仍然有'changeSet'錯誤 –