【发布时间】:2017-11-20 17:18:52
【问题描述】:
背景
我正在使用开源项目 mongobee 将数据库迁移添加到现有项目。实际的迁移都由 mongobee 及其变更日志和变更集的概念处理。此增强功能的一部分涉及在运行时检查当前的 MongoDB 数据库迁移版本,并将其与 java 应用程序预期的版本进行比较。这背后的原因是我们希望安装我们的产品下载代码更新(新 *.wars),并且在登录新版本的应用程序时,如果他们的数据库版本会提示管理员用户更新数据库低于预期。
我们目前正在使用 Maven 来打包和构建我们的软件。
问题
困扰我的一个方面是如何处理标记 Java 源代码期望的数据库版本。我希望避免在每次构建和添加迁移时手动输入。
我提出的解决方案可能并不理想。我最初的想法是对更改日志文件和类名使用约定,例如“v0001_first_migration”,然后在构建时,使用 maven AntRun 插件调用单独编译的 java 文件,该文件遍历迁移更改日志目录并查找最新迁移编号,然后将结果存储在资源文件中,可能是 XML。然后应用程序可以在运行时读取该 XML 文件以获取它期望的数据库版本。
1 - 这可行吗?
2 - 有没有办法在不使用 AntRun 的情况下在纯 Maven 中做这样的事情?
3 - 还有其他选择可以更轻松地完成此任务吗?
【问题讨论】: