どのように私は、JAXBとAnt XJCタスクを使用して複数のXSDスキーマを処理することができますか?
質問
私はそうのようなAntスクリプト内のXMLスキーマからJavaオブジェクトのクラスを生成するために、JAXBを使用しています:
<!-- JAXB compiler task definition -->
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask"
classpathref="master-classpath"/>
<!-- Generates the source code from the ff.xsd schema using jaxb -->
<target name="option-generate" description="Generates the source code">
<mkdir dir="${generated-src.dir}/${option.dir}"/>
<xjc schema="${config.dir}/ff.xsd" destdir="${generated-src.dir}"
package="${option.package.name}">
<arg value="-Xcommons-lang" />
<arg value="-Xcommons-lang:ToStringStyle=SHORT_PREFIX_STYLE" />
<produces dir="${generated-src.dir}" includes="**/*.java" />
</xjc>
</target>
さて、これは1つのスキーマ(この例ではff.xsd)のために見事に動作します。どのように私は、いくつかのスキーマ(すなわち、いくつかのXSDファイル)を処理することができますか?
私は、スキーマごとに別々のAntタスクを持ってみましたが、どういうわけか、これはAntのプロセス最初のタスクとして動作しませんし、次のスキーマは、「ファイルが最新である」と述べている!
解決
<target name="process-resources" description="Process resources">
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask"/>
<xjc destdir="${basedir}/target/generated-sources/jaxb"
extension="true">
<schema dir="src/main/xsd"
includes="JaxbBindings.xsd,CoreTypes.xsd"/>
</xjc>
</target>
他のヒント
<target name="generate-jaxb-code">
<java classname="com.sun.tools.internal.xjc.XJCFacade">
<arg value="-p" />
<arg value="com.example"/>
<arg value="xsd/sample.xsd" />
</java>
</target>
は、ダウンロード可能なJAXBとANTタスクのみ船ようですが、JAXBは、そのおそらくJAXBの最新リリースを取り、に追加することをお勧めJDKの一部ではないので、JDK 6の一部であることをJAXBで動作しますそれはピックアップに、あなたはおそらくクラスローダーの設定で周りの混乱に必要なダウンロード版ではなく、JDK内のバージョンを意味するので、JDKのクラスパスます。
また、単に次のようなコマンドを使用して、メインのXSDファイル内の他のXSDファイルを含むことができ、
<xs:include schemaLocation="path/to/secondschema.xsd"/>
所属していません StackOverflow