Java xjc向不同的包发送不同的类
我使用JAXB从xsd模式创建类是否有一种方法可以标记单个complexTypes,以便将它们发送到不同的目标包,而不是将它们全部发送到同一个包? 我需要这样做的原因是,许多生成的java类将被来自不同源的同名的其他类替换。从一个目标文件夹中手动删除所有未使用的类是一件痛苦的事情。将所有不需要的类放在一个不同的文件夹中会更容易,当我将输出导入eclipse时,我可以忽略这个文件夹。当我试图简单地从xsd文件中不需要的类中排除complexType定义时,xjc每次遇到不需要的类型之一的属性时都会抛出错误。我需要保留属性引用,但我希望这些属性的最终java引用指向已经通过其他方式生成的同名类 下面是编译类的build.xml方法。我该如何改变它Java xjc向不同的包发送不同的类,java,xml,ant,jaxb,xsd,Java,Xml,Ant,Jaxb,Xsd,我使用JAXB从xsd模式创建类是否有一种方法可以标记单个complexTypes,以便将它们发送到不同的目标包,而不是将它们全部发送到同一个包? 我需要这样做的原因是,许多生成的java类将被来自不同源的同名的其他类替换。从一个目标文件夹中手动删除所有未使用的类是一件痛苦的事情。将所有不需要的类放在一个不同的文件夹中会更容易,当我将输出导入eclipse时,我可以忽略这个文件夹。当我试图简单地从xsd文件中不需要的类中排除complexType定义时,xjc每次遇到不需要的类型之一的属性时都会
<!--compile Java source files-->
<target name="compile" description="Compile all Java source files">
<echo message="Compiling the schema..." />
<mkdir dir="gen-src" />
<mkdir dir="gen-src/primer/po" />
<xjc schema="somefilename.xsd" package="primer.po" destdir="gen-src" binding="rename.xjb">
<produces dir="gen-src/primer/po" includes="**/*.java" />
</xjc>
<echo message="Compiling the java source files..." />
<mkdir dir="classes" />
<javac destdir="classes" debug="on">
<src path="src" />
<src path="gen-src" />
<classpath refid="classpath" />
</javac>
</target>
我认为有两件事可能会有所帮助:
- 使用
自定义模式,将不同名称空间中的类放入不同的包中schemaBindings
- 使用
将类型映射到现有类jaxb:class/@ref
包
或生成包
选项来配置输出包。使用schemaBindings
binding元素
例如:
<jaxb:bindings
schemaLocation="ogc/wps/1.0.0/wpsAll.xsd"
node="/xs:schema">
<jaxb:schemaBindings>
<jaxb:package name="net.opengis.wps.v_1_0_0"/>
</jaxb:schemaBindings>
</jaxb:bindings>
jaxb:class/@ref
如果你这样做
<xs:complexType name="vehicle">
<xs:annotation><xs:appinfo>
<jaxb:class ref="com.acme.foo.Vehicle" />
</xs:appinfo></xs:annotation>
</xs:complexType>
然后XJC应该不为Vehicle生成新类,而是使用com.acme.foo.Vehicle
这与schemaBindings
结合使用可能会解决您的问题。不直接,但确实如此
文件:
- 相关答案