Liquibase 3.0.1 Gradle integration

旧时模样 提交于 2019-12-23 06:07:37

问题


We're using liquibase for database versioning and gradle as build tool. Currently we use

liquibase in version 2.0.5
com.augusttechgroup:gradle-liquibase-plugin:0.7

Due to a bug in liquibase which was fixed in 2.0.5 we're forced to go to version 3.0.x.

Unfortunately the gradle plugin doesn't work anymore.

:dropAll
Liquibase Update Failed: liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lliquibase/database/Database;
SEVERE 06.03.14 14:28:liquibase: liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lliquibase/database/Database;
java.lang.NoSuchMethodError: liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lliquibase/database/Database;
    at com.augusttechgroup.gradle.liquibase.Main.doMigration(Main.java:614)

Is there any alternative?


回答1:


For Liquibase 3, you'll need to use version 1.0.0-SNAPSHOT of the Gradle Liquibase plugin. See the README on the plugin page for details.




回答2:


You could roll-your-own using JavaExec and not be dependable of the plugin. Example:

configurations {
    liquibase
}

dependencies {
    liquibase '<jdbc-driver>'
    liquibase 'org.liquibase:liquibase-core:3.0.1'

}

task dropAll(type: JavaExec) {
    group = "Liquibase"
    classpath configurations.liquibase
    main = "liquibase.integration.commandline.Main"

    args "--changeLogFile=<path and filename>"
    args "--username=<value>"
    args "--password=<value>"
    args "--url=<value>"
    args "--driver=<value>"
    args "dropAll"
}

This way you are not dependable on the plugin and can use whichever version of Liquibase you'd like. Against is that you will not be able to write your changelogs in Groovy, but stick to liquibase standard xml.



来源:https://stackoverflow.com/questions/22226175/liquibase-3-0-1-gradle-integration

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!