当我在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从不同的位置选择了两次变更集:来自构建代理的构建文件夹和项目的根目录。
有人遇到同样的问题吗? 任何想法如何解决这个问题?
答案 0 :(得分:5)
Liquibase有一个设计缺陷,在我们的第一眼看到“相同”的变化集合是不同的。要绕过这样的特性,您可以在logicalFilePath
标记或每个databaseChangeLog
标记上使用changeSet
属性。这个将为您的更改集添加另一级别的标识,唯一性。