Pergunta

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?

Foi útil?

Solução 2

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.

Outras dicas

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top