打包应用程序时,Liquibase脚本无法执行

时间:2017-09-18 10:50:30

标签: spring-boot liquibase

我正面临着Liquibase的一个奇怪问题(我使用的是3.4.2):

  • 当我从IDE启动应用程序时,部署新脚本没有问题。
  • 当我打包我的应用程序(作为jar)并将其部署在我的CI管道中时,脚本不会被执行,我得到以下错误:
  

INFO 8 --- [main] liquibase:成功获取更改日志锁定
  WARN 8 --- [main] liquibase:包含文件类路径:/db/changelog/db.changelog-master.yaml/不是可识别的文件类型

我正在使用includeAll模式:

databaseChangeLog:
  - includeAll:
      path: changes
      relativeToChangelogFile: true

另外,如果它有所不同,我的应用程序中有几个模块(Spring Boot应用程序):

  • 我的主要应用程序是moduleA:这是我构建并运行的jar
  • moduleA依赖于moduleB,其中Liquibase脚本为

问题似乎与此处描述的类似:http://forum.liquibase.org/topic/includeall-not-working-for-multimodule-project-with-spring,但未提供解决方案。

1 个答案:

答案 0 :(得分:1)

在尝试各种各样的事情之后,比如逐个包含文件,或升级Liquibase版本,看起来最简单的方法是通过解压缩文件来调整moduleA的spring-boot-maven-plugin配置:这种方式,Liquibase能够找到它正在寻找的文件。

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <requiresUnpack>
                    <dependency>
                        <groupId>com.mydomain</groupId>
                        <artifactId>moduleB</artifactId>
                    </dependency>
                </requiresUnpack>
            </configuration>
        </plugin>