Java 在应用程序之间共享枚举(业务域)

Java 在应用程序之间共享枚举(业务域),java,git,maven,jenkins,microservices,Java,Git,Maven,Jenkins,Microservices,我们有一个体系结构,其中两个应用程序共享相同的枚举列表,因为它们绑定到相同的业务域模型。这意味着在升级和发布应用程序1时,还需要升级和发布应用程序2,否则会出现异常。 实际上,升级版本2有时会被忘记,因为枚举列表的升级可能每年只发生一次。这种操作问题非常类似于在两个连接的应用程序中升级xsd,这也是SOAP中非常常见的问题 我们正在寻找解决问题的可靠方法,但这并不十分简单。 我有以下想法: 代码库中的简单注释作为升级应用程序2的提醒 升级枚举文件(假设这是一个共享库)时的GIT通知 更改枚举文

我们有一个体系结构,其中两个应用程序共享相同的枚举列表,因为它们绑定到相同的业务域模型。这意味着在升级和发布应用程序1时,还需要升级和发布应用程序2,否则会出现异常。
实际上,升级版本2有时会被忘记,因为枚举列表的升级可能每年只发生一次。这种操作问题非常类似于在两个连接的应用程序中升级xsd,这也是SOAP中非常常见的问题

我们正在寻找解决问题的可靠方法,但这并不十分简单。
我有以下想法:

  • 代码库中的简单注释作为升级应用程序2的提醒
  • 升级枚举文件(假设这是一个共享库)时的GIT通知
  • 更改枚举文件/库时由Jenkins管道触发的通知(例如,分析git差异并发送自动电子邮件的脚本)
  • 当lib被释放时,“以某种方式”触发所有使用Maven依赖项(共享库)的服务中的依赖项的自动依赖项升级
你能给出你自己的经验/建议吗?

您是否曾经处理过相同的问题并实施过稳定的解决方案

定义两个应用程序都使用的共享库。单一的真相来源远比你描述的任何机制都好,因为它们很容易被忽略。@AndyTurner这当然不是问题。问题在于操作方面,您必须记住,一个应用程序的升级也需要在另一个应用程序中进行。这很容易被忘记,所以我们正在寻找一个自动化的解决方案,如果存在的话。我想说,在升级app1时,即使枚举没有更改,您也总是升级App2。这在Jenkins中应该很容易触发。定义两个应用程序都使用的共享库。单一的真相来源远比你描述的任何机制都好,因为它们很容易被忽略。@AndyTurner这当然不是问题。问题在于操作方面,您必须记住,一个应用程序的升级也需要在另一个应用程序中进行。这很容易被忘记,所以我们正在寻找一个自动化的解决方案,如果存在的话。我想说,在升级app1时,即使枚举没有更改,您也总是升级App2。这在詹金斯应该很容易触发。