2017-06-25 3 views
0

私は以下のLiquibaseスクリプトをGroovyで書いています。Liquibase groovy accessomg datebaseChangeLogプロパティ

package data.db 

databaseChangeLog { 

    // H2 
    property(name: "date", value: "DATETIME", dbms: "h2") 
    property(name: "integer", value: "INTEGER", dbms: "h2") 
    property(name: "bigint", value: "BIGINT", dbms: "h2") 
    property(name: "current_date", value: "NOW()", dbms: "h2") 
    property(name: "current_timestamp", value: "NOW()", dbms: "h2") 

    // TABLES 
    include(file: "tables/2017-06-22-001-user-account-tables.groovy", relativeToChangelogFile: true) 
} 

私は、ビルドのためのGradleを使用していると私は、それ自体が作品compile "org.liquibase:liquibase-groovy-dsl:1.2.2"ので、スクリプトが含まれています。

しかし、私はどのようにこれらのdatabaseChangeLogプロパティにスクリプト内でアクセスできるか分かりません。私は見つけることができませんし、ドキュメンテーションやそれを行う方法の例。

xmlを使用するとかなり簡単です。ここにはdocumentation with an exampleがあります。

Groovyを使用してこれを行うにはどうすればよいですか?

答えて

0

わかりました。うまくいく解決策を見つけましたが、やや扱いにくいようです。

package data.db.tables 

import liquibase.changelog.DatabaseChangeLog 

databaseChangeLog { 

    final DatabaseChangeLog dcl = (DatabaseChangeLog) properties['databaseChangeLog']; 
    final String bigintType = dcl.changeLogParameters.getValue("bigint", dcl) 

    changeSet(id: "2017-06-22-001-user-account-tables", author: "goranmrzljak") { 
    comment("User account tables") 

    createTable(tableName: "user_account_permission") { 
     column(name: "id", type: bigintType) { 
     constraints(primaryKey: true, primaryKeyName: "user_account_permission_pk") 
     } 

     // ... 
    } 

    // ... 
    } 
} 

これは、同じファイルまたはdatabaseChangeLogの両方で動作する、または別のファイルまたはdatabaseChangeLogからで:ここで

final DatabaseChangeLog dcl = (DatabaseChangeLog) properties['databaseChangeLog']; 
final String bigintType = dcl.changeLogParameters.getValue("bigint", dcl) 

は、コンテキストのビットです。そのようなことがあれば、より良いものをお勧めしてください。プロパティが定義された場所。

関連する問題