2017-03-01 14 views
0

私はComplexTypesに対応する多くのJavaクラスを生成する既存のWSDLファイルを持つプロジェクトを持っています。これは何ヶ月もうまくいきましたが、それでもやっています。しかし、生成されたクラスに使用するパッケージを決定する方法を理解できません。xjcは、生成されたクラスに使用するパッケージをどのように決定しますか?

もう1つのWSDLを同様の目的で追加したいのですが、生成されるクラスはもちろん別のパッケージに入れられます。

すべてのXMLファイルで「package」を検索しました。私はすべてのファイルで既存の生成されたクラスのパッケージ名を検索しました(生成されたクラスを使用するソースファイル内でのみ検索します)。パッケージ名は、xjcプラグインと目的を指定するpom.xmlのどこにも表示されません。

私はそれを試しただけではうまくいくかもしれませんが、それがどのように動作するかを理解して、生成されたクラスを使用してワークスペースの一部を浪費するリスクを低減します。 XJC(またはMaven、または誰でも)がパッケージ名を取得する場所はどこですか?

答えて

1

xsdとsrcフォルダの相対的な場所と名前空間を結合します。

たとえば、名前空間がhttp://www.w3.org/2005/Atomの場合、パッケージはorg.w3._2005.atomになります。

これにXSDのパッケージが追加されます。

指定することができるmavenプラグインを使用している場合は、これを上書きできます。http://www.mojohaus.org/jaxb2-maven-plugin/Documentation/v2.2/example_xjc_basic.htmlを参照してください。

+2

具体的には、wsdlの「schema」タグでは、「targetNamespace」の値がパッケージ名に変換されます。名前空間のドメイン名部分はその要素が逆になり、値の他の部分は連結されます: "http://x.y.z/a/b"は "z.y.x.a.b"パッケージになります。 – arcy

関連する問題