0

我正在开发一个spring-shell数据库迁移工具。

目前我尝试将 liquibase 与groovy-dsl 扩展一起使用。我的 build.gradle 包括扩展 jar,我也在spring-shell-plugin.xml

spring-shell-plugin.xml

<bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase" depends-on="postgresService">
    <property name="dataSource" ref="psqlDataSource"/>
    <property name="changeLog" value="com.example.db.DbChangelog_master"/>
    <property name="defaultSchema" value="${postgres.schema}"/>
</bean>

但是每次我启动应用程序 liquibase 都会引发以下错误

Caused by: liquibase.exception.UnknownChangelogFormatException: Cannot find parser that supports com.example.db.DbChangelog_master
    at liquibase.parser.ChangeLogParserFactory.getParser(ChangeLogParserFactory.java:70)
    at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:226)
    at liquibase.Liquibase.update(Liquibase.java:202)
    at liquibase.Liquibase.update(Liquibase.java:192)
    at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:434)
    at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:391)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
    ... 13 more

文档有点少见,jar 也包含在类路径中。

groovy 脚本是否需要包含在内src/main/resources?目前它们在一个单独的包中src/main/groovy

4

1 回答 1

1

我认为你的财产

<property name="changeLog" value="com.example.db.DbChangelog_master"/>

是不正确的。这应该是您的更改日志文件的路径。如果该文件是一个 groovy 文件,它可能是

<property name="changeLog" value="DbChangelog_master.groovy"/>

如果该文件在类路径中可用。

于 2016-03-09T15:31:23.707 回答