如何管理XML模式及其生成的类的版本和部署?

时间:2019-06-03 12:46:00

标签: java xml maven xsd jaxb

我们维护着多个通过XML进行通信的项目。 接口在XML模式(.xsd文件)中定义。 我们使用JAXB从那些模式中生成类,然后在项目中使用它们。 我们还使用.xsd文件来验证输入或输出。

有时候,我们需要更新架构以创建一个可能与向后兼容的新版本。

我们如何有效管理这些架构?项目应该能够选择要使用的模式的版本。如果每个项目的构建都不必再次集成和维护类生成步骤,那就太好了。有什么好的做法吗?

我目前正在考虑两个选择:

  1. 将生成的类打包为工件,并将其部署到Maven存储库中,项目可以从中将其引入。项目不必处理类的生成,而可以访问.xsd文件本身变得更加复杂。

  2. 将模式作为Git子模块拖入项目。这样可以轻松访问架构文件,但是每个项目的构建都必须费心生成类。

1 个答案:

答案 0 :(得分:0)

基本上,除非架构非常稳定,否则JAXB(通常是XML数据绑定)是一个坏主意。您可能使用了错误的技术。使用多个版本的模式意味着您正在使用多个版本的已编译Java代码,而这始终是维护的噩梦。

这可能不是有用的建议,但是我的建议是,不要从这里开始。如果模式的多个版本需要共存,那么您需要一种不需要每次更改模式都需要重新编译应用程序的技术。查看通用的低级API(例如JDOM2或XOM)或面向声明性的面向XML的语言(例如XSLT,XQuery或LINQ)。