如何防止JAXB从导入的模式生成Java?

时间:2010-04-06 21:34:38

标签: java jaxb

我有两个Java项目,都基于模式定义生成Java类,我使用xjc来创建类。

我的第二个项目取决于第一个项目中的一个类,特别是我想在第二个项目中生成的一个类需要使用第一个项目中的一个类型。

要在架构级别实现此依赖关系,我使用简单的xsd:import将命名空间映射到特定架构。

JAXB在这种情况下运行得很好,除了它还在第二个项目中生成第一个项目的类型。所以跑完后会有这样的事情:

Project A
  +-- com.foo.bar
    +-- TypeA

Project B
  +-- com.foo.asdf
    +-- TypeB
  +-- com.foo.bar
    +-- TypeA

第二个“TypeA”是不受欢迎的,我想首先不要生成它。如何指示JAXB不生成由于import语句而找到的“TypeA”类?

2 个答案:

答案 0 :(得分:5)

将其自定义为DOM元素(<jaxb:dom/>)。

<xs:element name="a" type="a:Type">
  <xs:annotation>
    <xs:appinfo>
      <jaxb:dom/>
    </xs:appinfo>
  </xs:annotation>
</xs:element>

您可能也对separate/episodic schema compilation感兴趣。

答案 1 :(得分:0)

另一种选择是如果您进行谷歌情节编译,那么如果项目A已经有jaxb对象,您可以使用它的剧集文件来编译项目B的jaxb对象,但不必将项目A的xsds重新编译为对象。