0

私は jibx Maven プラグインを使用して、一部の xsds を Java ソース コードに変換します。スキーマ A には、スキーマ B で定義された型への参照があります。以前は、この pom.xml 構成を使用していましたが、すべて正常に機能していました。

<plugin>
    <groupId>org.jibx</groupId>
    <artifactId>jibx-maven-plugin</artifactId>
    <version>1.2.3</version>
    <configuration>
        <schemaLocation>${basedir}/resources/oxm/schemas</schemaLocation>
        <schemaBindingDirectory>${basedir}/src/java</schemaBindingDirectory>
        <includeSchemas>
            <includeSchema>schemaA.xsd</includeSchema>
            <includeSchema>schemaB.xsd</includeSchema>
            <includeSchema>schemaC.xsd</includeSchema>
        </includeSchemas>
        <verbose>true</verbose>
     </configuration>
 </plugin>

入力スキーマ A は次のようなものです。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="myApp.com/schema/schemaA"targetNamespace="http://myApp.com/schema/schemaA" xmlns:rsType="http://myApp.com/schema/schemaB">
<xs:import schemaLocation="schemaB.xsd" namespace="http://myApp.com/schema/schemaB" />
<xs:complexType name="classAType">
    <xs:sequence>
        <xs:element name="objB" type="rsType:classBType" />
    </xs:sequence>
    <xs:attribute name="foo" type="xs:int" />
 </xs:complexType>

入力スキーマ B には、classBType の定義を持つ同様のコードがあります。

以前の Java ソース出力は次のようなものでした。

class classA
{
    classB objB;
    int foo;
}

最近、pom.xml の異なるビルド実行でのスキーマの変換を分離して、それらに対して異なるターゲット パッケージを定義できるようにしました。私の新しい pom.xml は次のとおりです。

<plugin>
    <groupId>org.jibx</groupId>
    <artifactId>jibx-maven-plugin</artifactId>
    <version>1.2.3</version>
    <configuration>
        <schemaLocation>${basedir}/resources/oxm/schemas</schemaLocation>
        <schemaBindingDirectory>${basedir}/src/java</schemaBindingDirectory>
        <verbose>true</verbose>
     </configuration>
     <executions>
         <execution>
             <id>schemaCodegenA</id>
             <goals>
                 <goal>schema-codegen</goal>
             </goals>
             <configuration>
                 <includeSchemas>
                     <includeSchema>schemaA.xsd</includeSchema>
                  </includeSchemas>
                  <options>
                      <package>com.myApp.jibxgenerated.schema.resource</package>
                  </options>
              </configuration>
          </execution>

(... スキーマのセットごとに 1 回の実行)

Java ソース出力は次のようになります。

class classA
{
    // all properties of class B here
    int classBattrib1;
    int classBattrib2;
    int classBattribN;
    int foo;
}

これは予想される動作ですか?classB の参照をクラス A のソース コードに戻したいのですが、これを実現する方法はありますか?

助けてくれてありがとう。

4

1 に答える 1

1

ユーザー1550682、

実際、JiBX はこのケースを非常に簡単に処理します。各スキーマを個別の jar にパッケージ化し、maven プラグインを使用してサブモジュールを簡単に参照できます。

ここでモジュラー スキーマの手順を参照してください: http://jibx.sourceforge.net/maven-jibx-plugin/modular-codegen.html

ここで github のサンプル コードを見てみましょう: https://github.com/jibx/maven-plugin/tree/master/test-suite/base-binding-test

この例では、company -> address -> person という 3 つの単純なスキーマを使用しています。一部のxmlをマーシャリングおよびアンマーシャリングする簡単なテストがありました。

これが役立つことを願っています!

ドン

于 2012-08-11T20:20:28.983 に答える