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

时间:2016-06-06 11:06:27

标签: maven teamcity liquibase

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

Maven项目结构:

changelogs/
databaseChangeLog.xml
pom.xml

运行命令: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

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

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

1 个答案:

答案 0 :(得分:5)

Liquibase有一个设计缺陷,在我们的第一眼看到“相同”的变化集合是不同的。要绕过这样的特性,您可以在logicalFilePath标记或每个databaseChangeLog标记上使用changeSet属性。这个将为您的更改集添加另一级别的标识,唯一性。