どのように私は、JAXBとAnt XJCタスクを使用して複数のXSDスキーマを処理することができますか?

StackOverflow https://stackoverflow.com/questions/1924613

  •  20-09-2019
  •  | 
  •  

質問

私はそうのような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"/>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top