2

我有一个使用 framework.xsd 生成 JAXB 的项目。这会生成一个包含 xsd 和 jaxb 对象以及围绕该内容的其他类的 jar。

然后另一组(两个不同的组)将扩展framework.xsd 并使用模式扩展内容进行subxmling 以扩展framework.xsd 中的对象。他们还希望生成 jaxb 对象,但他们希望 SomeClass.java 明显扩展我的 Framework.java 并且不希望以全新的层次结构结束。

  1. 这甚至可能吗?
  2. 如何做这样的事情?因为解决方案需要
    1. 告诉 jaxb 编译器名称空间 yy 已经生成,所以不要生成
    2. 告诉 jaxb 编译器它需要引用 zzzzzz 包中的类或者从框架 jar 文件中查看 xjb 文件什么的。

这可能吗?谢谢,院长

4

1 回答 1

1

在为您的第一个模式生成 JAXB 类时,您想使用剧集文件:http ://weblogs.java.net/blog/kohsuke/archive/2006/09/separate_compil.html。

$ xjc -episode framework.episode framework.xsd

然后使用您的 framework.jar 的其他组应该:

1)在他们自己的架构中导入您的架构,例如:

<xsd:import namespace="http://www.myorg.com/framework" schemaLocation="framework.xsd"/>

2) 生成他们的 JAXB 类

$ xjc extend.xsd -b framework.episode

(他们在 xjc 时需要您的 xsd 和剧集文件的副本,以及类路径中的 framework.jar)

请注意,根据上面的博客文章,您还可以将 framework.episode 文件放在您的 jar 中(例如,至少 JAXB RI 的 /META-INF/sun-jaxb.episode - 其他 JAXB impl 可能有其他方法来完成相同的操作事物),因此可以省略 -b framework.episode 选项。我个人觉得这有点不切实际,无论如何你仍然需要 XSD。

于 2012-05-13T16:46:43.980 回答