Java 为什么liquibase向diffChangelog的现有内容追加新的更改?

Java 为什么liquibase向diffChangelog的现有内容追加新的更改?,java,database,liquibase,liquibase-hibernate,Java,Database,Liquibase,Liquibase Hibernate,我正在使用Liquibase Hibernate扩展来针对我的数据库和模型生成diffChangeLogFile。问题是,当我使用maven运行它时,模型中出现了一些更改,Liquibase将生成的更改集附加到旧的diffChangeLogFile内容中,因此我得到了大量重复的更改集,不是使用相同的id,而是使用相同的内容。 我知道更新不会有问题,因为Liquibase会跳过重复的变更集,但我希望每次运行maven diff goal时,Liquibase都会删除diffChangeLogFil

我正在使用Liquibase Hibernate扩展来针对我的数据库和模型生成diffChangeLogFile。问题是,当我使用maven运行它时,模型中出现了一些更改,Liquibase将生成的更改集附加到旧的diffChangeLogFile内容中,因此我得到了大量重复的更改集,不是使用相同的id,而是使用相同的内容。
我知道更新不会有问题,因为Liquibase会跳过重复的变更集,但我希望每次运行maven diff goal时,Liquibase都会删除diffChangeLogFile的旧内容并放入新内容。

这基本上就是diff命令的目的。如果要生成新的更改日志,应该使用generateChangeLog命令

另一个问题plz:当将Liquibase与java一起使用时,如何在更新方法中传递inputStream或字符串而不是changelogfile路径?这可能吗?您可能需要编写自己的“集成”类才能做到这一点。我认为使用现有的集成(即命令行、maven等)没有办法做到这一点。此外,Liquibase用三个值标识变更集——id、作者和路径。因此,如果您有两个“功能等效”但ID不同的变更集,那么部署它们时就会遇到问题。