生成java对象的复杂jaxb场景

时间:2012-05-12 14:11:39

标签: jaxb xjc

我有一个使用framework.xsd进行JAXB生成的项目。这会生成一个带有xsd和jaxb对象的jar以及围绕这些东西的其他类。

然后另一个组(两个不同的组)将使用schema扩展stuff扩展framework.xsd和subxmling以扩展framework.xsd中的对象。他们也希望生成jaxb对象但是他们希望他们的SomeClass.java显然扩展我的Framework.java并且不希望最终得到一个全新的层次结构。

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

1 个答案:

答案 0 :(得分: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)

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