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

如何防止JAXB从导入的模式生成Java?,java,jaxb,Java,Jaxb,我有两个Java项目,都基于模式定义生成Java类,我使用xjc创建这些类 我的第二个项目依赖于第一个项目中的一个类,特别是,我想在第二个项目中生成的一个类需要使用第一个项目中的一种类型 为了在模式级别实现这种依赖性,我使用一个简单的xsd:import将名称空间映射到一个特定的模式 JAXB在这种情况下工作得很好,只是它还可以在第二个项目中生成第一个项目的类型。因此,跑步后,你可以做这样的事情: Project A +-- com.foo.bar +-- TypeA Projec

我有两个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生成类?

将其自定义为DOM元素


您可能还感兴趣。

将其自定义为DOM元素


您可能还对以下内容感兴趣。

另一个选项是,如果您在google上搜索情节编译,那么如果project A已经有jaxb对象,您可以使用它的插曲文件编译project B的jaxb对象,但不必将project A的XSD重新编译为对象。

另一个选项是,如果您使用google情景编译,那么如果project A已经有jaxb对象,您可以使用它的插曲文件来编译project B的jaxb对象,但不必将project A的XSD重新编译为对象。

难道您不能让它生成类,忽略您不需要的类,或者重新打包您需要的类吗?@skaffman,我正在通过ant运行整个过程,目前正在运行一个任务来删除额外的类,但在我看来,应该有更好的方法。你不能让它生成类,而忽略你不需要的类,或者重新打包你需要的类吗?@skaffman,我正在通过ant运行整个过程,我正在运行一个任务来删除额外的类,但在我看来,应该有更好的方法。也许我误解了…但我在ProjectB中的元素中添加了此注释并重新编译,我仍然得到了ProjectA的类型,我尝试删除导入,这产生了一个错误。您能稍微澄清一下您的示例吗?jaxb:dom只帮助删除从B到a的依赖关系。您将获得一个dom元素而不是AType,因此不存在编译时依赖关系。一个更正确的解决方案是插曲。查看这个Maven项目示例:另请参阅Kohsuke的这篇博文:谢谢-使用剧集修复了我的问题。也许我误解了…但是我在ProjectB中添加了这个注释并重新编译,我仍然得到了ProjectA的类型,我尝试删除导入,这会生成一个错误。您能稍微澄清一下您的示例吗?jaxb:dom只帮助删除从B到a的依赖关系。您将获得一个dom元素而不是AType,因此不存在编译时依赖关系。一个更正确的解决方案是插曲。查看这个Maven项目示例:另请参阅Kohsuke的这篇博文:谢谢-使用剧集修复了我的问题。
<xs:element name="a" type="a:Type">
  <xs:annotation>
    <xs:appinfo>
      <jaxb:dom/>
    </xs:appinfo>
  </xs:annotation>
</xs:element>