2

Framework.xsd を使用して JAXB 生成を行うプロジェクトがあります。これにより、xsd オブジェクトと jaxb オブジェクト、およびその周りの他のクラスを含む jar が生成されます。

次に、別のグループ (2 つの異なるグループ) が Framework.xsd を拡張し、スキーマを使用して subxml を拡張して、framework.xsd 内のオブジェクトを拡張します。彼らはまた、jaxb オブジェクトを生成したいと考えていますが、SomeClass.java が私の Framework.java を明らかに拡張することを望んでおり、まったく新しい階層になってしまうことを望んでいません。

  1. これは可能ですか?
  2. このようなことをする方法は?ソリューションが必要とするため
    1. 名前空間 yy が既に生成されているため、生成しないことを jaxb コンパイラに伝える
    2. jaxb コンパイラーに、パッケージ zzzzzz 内のクラスを参照する必要があること、またはフレームワーク jar ファイルなどから xjb ファイルを調べる必要があることを伝えます。

これは可能ですか?ありがとう、ディーン

4

1 に答える 1

1

最初のスキーマのJAXBクラスを生成するときに、エピソードファイル(http://weblogs.java.net/blog/kohsuke/archive/2006/09/separate_compil.html )を使用します。

$ xjc -episode framework.episode framework.xsd

次に、framework.jarを使用する他のグループは次のようにする必要があります。

1)独自のスキーマにスキーマをインポートします。例:

<xsd:import namespace="http://www.myorg.com/framework" schemaLocation="framework.xsd"/>

2)JAXBクラスを生成します

$ xjc extend.xsd -b framework.episode

(xjc時にxsdとエピソードファイルのコピー、およびクラスパスのframework.jarが必要になります)

上記のブログ投稿によると、framework.episodeファイルをjar内に配置することもできます(たとえば、少なくともJAXBRIの場合は/META-INF/sun-jaxb.episode-他のJAXBimplには、同じことを実現する他の方法がある場合があります-bframework.episodeオプションを省略できるようにします。個人的には少し実用的ではないと思いますが、とにかくXSDが必要です。

于 2012-05-13T16:46:43.980 に答える