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

标签 java xml maven xsd jaxb

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

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

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

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

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

  2. 将架构作为 Git 子模块拉入项目中。这提供了对架构文件的简单访问,但每个项目的构建都必须费心生成类。

最佳答案

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

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

关于java - 如何管理 XML 模式及其生成的类的版本和部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56427689/

相关文章:

java - QuickContactBadge 使应用程序崩溃 :

java - 这种情况下如何通过API进行单元测试呢?

php - 使用 PHP DOM 在 XML 文件中插入数据

xml - Golang - 使用 attr 解码 XML

java - 使用带有 -clientjar 选项的 jaxws-maven-plugin

java - Jackson - 反序列化一个基本枚举

java - 如何将文本添加到 JTextArea

xml - fatal error : The schemaLocation attribute does not contain pairs of values

java - Dagger 2 不在 Eclipse 上生成组件

java - 从 Maven 运行 gwt - IntelliJ