私は 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 のソース コードに戻したいのですが、これを実現する方法はありますか?
助けてくれてありがとう。