Liquibase在单个Maven构建中多次执行变更集

ybo*_*dar 4 teamcity liquibase maven

当我在TeamCity构建代理上运行简单的Maven项目时,我正在观察一些奇怪的Liquibase行为.

Maven项目结构:

changelogs/
databaseChangeLog.xml
pom.xml
Run Code Online (Sandbox Code Playgroud)

运行命令:mvn liquibase:update

databaseChangeLogs.xml包含下一行: <includeAll path="changelogs/"/>

但构建日志包含重复记录:

liquibase: databaseChangeLog.xml: /home/teamcity/BuildAgent/work/28fe713da351c06d/changelogs/1.xml: ChangeSet /home/teamcity/BuildAgent/work/28fe713da351c06d/changelogs/1.xml ran successfully in 40ms

liquibase: databaseChangeLog.xml:  Custom SQL executed
liquibase: databaseChangeLog.xml: changelogs/1.xml: ChangeSet changelogs/1.xml ran successfully in 36ms
Run Code Online (Sandbox Code Playgroud)

因此,Liquibase似乎从不同的位置选择了两次变更集:来自构建代理程序的构建文件夹和项目的根目录.

有人遇到同样的问题吗?任何想法如何解决这一问题?

srz*_*hio 5

Liquibase有点设计缺陷,乍看之下"相同"的变更设置与众不同.要绕过这样的特性,您可以logicalFilePathdatabaseChangeLog标签或每个changeSet标签上使用属性.这个将为您的更改集添加另一级别的标识,唯一性.