質問
私はJAXBを使用してXSDファイルからJavaクラスを生成するには、このMavenの "タスク" を持っています。
<!-- XML to Java classes -->
<plugin>
<groupId>com.sun.tools.xjc.maven2</groupId>
<artifactId>maven-jaxb-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<generatePackage>nl.compay.service</generatePackage>
<schemaDirectory>src/main/webapp/compay</schemaDirectory>
</configuration>
</plugin>
XSDタイプについては、「ユーザー」は、「ユーザー」(当たり前)という名前のクラスを生成します。しかし、私はまた、(異なるパッケージでも)「ユーザー」と呼ばれるJPAエンティティクラスを持っています。 私は、JAXBは、「XML」?
のようなもので生成されたクラスの前に付けるようにする上記のXML設定を変更することができます解決
これは一般的な要件です。あなたは、JAXBは、Javaクラス名にスキーマタイプ名を変換する方法をカスタマイズするために追加のJAXBバインディングファイルを提供することにより、それを行うことができます。
これらのファイルは通常、拡張子「.xjb」で終わります。あなたは、たとえば、スキーマのための1つを作成する必要があります:
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc">
<jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema">
<jxb:schemaBindings>
<jxb:nameXmlTransform>
<jxb:typeName prefix="XML"/>
<jxb:anonymousTypeName prefix="XML"/>
</jxb:nameXmlTransform>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>
あなたはそれをやった後は、、ビルドディレクトリのどこかにXJBファイルをドロップすると、翻訳中にそれを利用するためにMavenを教えます:
<includeBindings>
<includeBinding>mybindings.xjb</includeBinding>
</includeBindings>
そして、ここでは、道路のためのヒントです:あなたは、スペース(例えば「のDocuments and Settings \ユーザー\プロジェクト」)を含むパスであるならば、JAXBは奇妙なエラーで倒れます。
。所属していません StackOverflow