17

プロジェクトで JAXB を使用しています。JAXB の魅力は、JDK にバンドルされていることです。私はコマンド ラインで xjc.exe を使用して、スキーマから .java ファイルを生成しました。JAXB ant タスクが見つからないようです。確かにhttp://jaxb.java.netにダウンロードがありますが、JDK にバンドルされている JAXB を使用したいのですが、ant から JAXB を呼び出す方法はありますか?クラスは xjc.exe を呼び出しますか?

4

3 に答える 3

20
<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>

tools.jar を調べてみたところ、com.sun.tools.internal の XJCFacade.class が見つかりました。上記のコードをテストしたところ、動作し、xjc.exe として出力が生成されました。XJC.exe はこのコードを com.sun.tools と呼んでいるようです。 .internal.xjc.XJCFacade

私の重要な要件の 1 つは、ファイルがオペレーティング システム間で移植できるように、JDK へのパス名を含める必要なく、ant ファイルが Eclipse 内で機能することでした。インストールされたJRE設定オプションを介して、tools.jarがクラスパスに含まれていると想定しています。

于 2010-09-02T21:10:19.333 に答える
14

ここに役立つリンクがあります:

Java SE 6 には Ant タスクが同梱されていません (7.1.3 を参照)。

基本的に、彼らは次のことを行います。

<target name="xjc" description="....">
    <exec executable="${jdk.dir}/bin/xjc.exe">
        <arg value="-d"/>
        <arg value="${src.dir}"/>
        <arg value="-p"/>
        <arg value="com.mydomain.jaxb"/>
        <arg value="${etc.dir}/myschema.xsd"/>
    </exec>
</target>
于 2010-09-02T19:38:52.687 に答える
1

JAXB2 Basics には、いくつかのサンプル Ant/JAXB プロジェクトが見つかりません。

http://confluence.highsource.org/display/J2B/Latest+Release

于 2010-09-07T15:18:59.227 に答える