JAXB-2 Maven 插件、模式包含和绑定
JAXB-2 Maven Plugin, schema inclusion and bindings
我正在使用 JAXB-2 Maven 插件从一些 xsd 文件开始生成 java 类。我的配置如下。我有三个没有目标名称空间 A 的模式文件,B 包含在 C 中,然后我有另外两个模式 D 和 E,它们都包含 C。
是否可以使用绑定或不同的执行(带有剧集)让每个模式在不同的包中生成 类?类似于:
A schema (no namespace) -> com.packageA
B schema (no namespace) -> com.packageB
C schema (no namespace) -> com.packageC
D schema (namespace X) -> com.packageD
E schema (namespace X) -> com.packageE
当然没有类重复?或者我能拥有的最好的是有两个包,一个用于 类 属于具有空命名空间的 XSD 文件,另一个用于两个具有命名空间 X 的 XSD 文件?你能提供一个 pom.xml 文件的例子来实现吗?
谢谢
又如何
免责声明:我是 maven-jaxb2-plugin
的作者,所以这个答案是关于那个插件的。
这叫做"separate schema compilation"。这可以使用剧集来实现,请参阅 maven-jaxb2-plugin
文档中的 explanation。
简而言之:
- 为每个逻辑模式创建一个 Maven 项目。我通常每个不同的命名空间都有一个项目。
- 如果模式 B 使用模式 A,则包括模式 A 的工件作为 B 的依赖项。
maven-jaxb2-plugin
将默认使用依赖项作为剧集。
- 在某些情况下,仍会为包含的剧集生成一些恢复 类。他们不应该,我相信这是 XJC 中的错误。在这些情况下,添加清理任务。
- 准备好面对一些奇怪的问题,因为 XJC 是一个棘手的工具。
这是一个 project,它以这种方式编译了大量模式。结果是大约 100 多个工件的依赖关系与模式的依赖关系非常相似。
我看到的一个问题是架构 A、B 和 C 具有相同的(空)命名空间,映射到不同的包。这可能不适用于 JAXB(另请参阅 "chameleon namespaces")。
我正在使用 JAXB-2 Maven 插件从一些 xsd 文件开始生成 java 类。我的配置如下。我有三个没有目标名称空间 A 的模式文件,B 包含在 C 中,然后我有另外两个模式 D 和 E,它们都包含 C。 是否可以使用绑定或不同的执行(带有剧集)让每个模式在不同的包中生成 类?类似于:
A schema (no namespace) -> com.packageA
B schema (no namespace) -> com.packageB
C schema (no namespace) -> com.packageC
D schema (namespace X) -> com.packageD
E schema (namespace X) -> com.packageE
当然没有类重复?或者我能拥有的最好的是有两个包,一个用于 类 属于具有空命名空间的 XSD 文件,另一个用于两个具有命名空间 X 的 XSD 文件?你能提供一个 pom.xml 文件的例子来实现吗? 谢谢 又如何
免责声明:我是 maven-jaxb2-plugin
的作者,所以这个答案是关于那个插件的。
这叫做"separate schema compilation"。这可以使用剧集来实现,请参阅 maven-jaxb2-plugin
文档中的 explanation。
简而言之:
- 为每个逻辑模式创建一个 Maven 项目。我通常每个不同的命名空间都有一个项目。
- 如果模式 B 使用模式 A,则包括模式 A 的工件作为 B 的依赖项。
maven-jaxb2-plugin
将默认使用依赖项作为剧集。- 在某些情况下,仍会为包含的剧集生成一些恢复 类。他们不应该,我相信这是 XJC 中的错误。在这些情况下,添加清理任务。
- 准备好面对一些奇怪的问题,因为 XJC 是一个棘手的工具。
这是一个 project,它以这种方式编译了大量模式。结果是大约 100 多个工件的依赖关系与模式的依赖关系非常相似。
我看到的一个问题是架构 A、B 和 C 具有相同的(空)命名空间,映射到不同的包。这可能不适用于 JAXB(另请参阅 "chameleon namespaces")。