代码之家  ›  专栏  ›  技术社区  ›  Mark Elliot

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

  •  1
  • Mark Elliot  · 技术社区  · 14 年前

    我有两个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 回复  |  直到 12 年前
        1
  •  5
  •   lexicore    14 年前

    自定义为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 .

        2
  •  0
  •   Dean Hiller    12 年前

    另一个选择是,如果你谷歌情景编译,所以如果项目A已经有JAXB对象,你可以使用它的插曲文件来编译项目B的JAXB对象,但不必重新编译项目A的XSD到对象。