bootique / bootique-liquibase

Integration of Liquibase with Bootique

Home Page:http://bootique.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DropAll does not work in shadowed JAR / upgrade LB to 3.6.3

atomashpolskiy opened this issue · comments

Here's my gradle.build:

dependencies {
    compile "io.bootique.liquibase:bootique-liquibase:${bootiqueVersion}"
    compile "io.bootique.jdbc:bootique-jdbc-tomcat:${bootiqueVersion}"
    compile "org.postgresql:postgresql:${postgresVersion}"
}

apply plugin: 'com.github.johnrengelman.shadow'

tasks.build.dependsOn tasks.shadowJar

jar {
    manifest {
        attributes 'Main-Class': 'net.manaty.octopusync.db.LiquibaseMain'
    }
}

shadowJar {
    mergeServiceFiles()
}

When running java -jar <path-to-shadowed-jar> --config=db/config/db-dev.yml --lb-drop-all --lb-default-schema=octopus I get the following error:

14:24:08.864 [main] DEBUG liquibase.servicelocator.ServiceLocator - ServiceLocator.findClasses for liquibase.command.LiquibaseCommand
14:24:08.864 [main] DEBUG liquibase.servicelocator.ServiceLocator - ServiceLocator finding classes matching interface liquibase.command.LiquibaseCommand
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for implementations of liquibase.command.LiquibaseCommand in packages: [liquibase.change, liquibase.changelog, liquibase.database, liquibase.parser, liquibase.precondition, liquibase.datatype, liquibase.serializer, liquibase.sqlgenerator, liquibase.executor, liquibase.snapshot, liquibase.logging, liquibase.diff, liquibase.structure, liquibase.structurecompare, liquibase.lockservice, liquibase.sdk.database, liquibase.ext]
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/change
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/changelog
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/database
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/parser
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/precondition
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/datatype
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/serializer
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/sqlgenerator
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/executor
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/snapshot
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/logging
14:24:08.864 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/diff
14:24:08.865 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/structure
14:24:08.865 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/structurecompare
14:24:08.865 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - No classes found in package: liquibase/structurecompare
14:24:08.865 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/lockservice
14:24:08.865 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/sdk/database
14:24:08.865 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to LiquibaseCommand in package: liquibase/ext
14:24:08.865 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - No classes found in package: liquibase/ext
14:24:08.865 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Found: []
Error running command '--config=db/config/db-dev.yml --lb-drop-all --lb-default-schema=octopus'
liquibase.exception.UnexpectedLiquibaseException: Could not find command class for dropAll
        at liquibase.command.CommandFactory.getCommand(CommandFactory.java:60)
        at liquibase.Liquibase.dropAll(Liquibase.java:1146)
        at io.bootique.liquibase.command.DropAllCommand.lambda$run$0(DropAllCommand.java:78)
        at io.bootique.liquibase.LiquibaseRunner.runWithLiquibase(LiquibaseRunner.java:66)
        at io.bootique.liquibase.command.DropAllCommand.run(DropAllCommand.java:76)
        at io.bootique.run.DefaultRunner.run(DefaultRunner.java:43)
        at io.bootique.BQRuntime.run(BQRuntime.java:85)
        at io.bootique.Bootique.exec(Bootique.java:349)
        at net.manaty.octopusync.db.LiquibaseMain.main(LiquibaseMain.java:8)

Other commands (like Update) are not affected and work just fine.
This issue was fixed here: liquibase/liquibase#837 (the commit is present in liquibase-core:3.6.3, which works).

Will upgrade LB to 3.6.3. Thanks for the heads up.