2つの JAXBMaven 2のプラグインがいくつかの異なる構成で存在することを確認しました。
1つはSunから: http://jaxb.dev.Java.net/jaxb-maven2-plugin/ 、もう1つはMojohausから: http://mojohaus.org/jaxb2 -maven-plugin /
これらの2つのプラグインのうち、推奨できるものはどれですか?
ありがとう、マット。私の小さな研究プロジェクトで、サンナーから来る別のプラグインがかなりあることがわかりました。
<groupId>com.Sun.tools.xjc.maven2</groupId>
<artifactId>maven-jaxb-plugin</artifactId>
そしてそれ:
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
まだCodehouseのものです。
まとめましょう。我々は持っています:
このスレッド のコメントに基づいて、私は常に maven-jaxb2-plugin (つまりプラグイン#1)を使用しました:
Org.jvnet.jaxb2.maven2:maven-jaxb2-pluginとcom.Sun.tools.xjc.maven2:maven-jaxb-pluginに関しては、私の観点からは間違いなく最初のものです( http:/ /maven-jaxb2-plugin.Java.net/ )。
このプラグインにはcom.Sun.tools.xjc.maven2:maven-jaxb-pluginよりも多くの機能があり、開発は活発です。最後に、私は著者の1人です:)。JAXB開発者およびユーザーと連絡を取り合い、最新の機能/リクエストに対応しています。
そして確かに、プラグイン#2はあまりアクティブではありません(デッド?)。そして、私はいつも#1に満足しているので、プラグイン#3を使ったことがないので、それについては何も言えません。念のため、ここにプラグイン#1の構成を示します。
<project>
...
<build>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
私は最近、上記の3つのプラグインを試しました(ここにも含まれています)。
4番目のオプションを使用することになりました:CXF XJC Mavenプラグインhttp://cxf.Apache.org/cxf-xjc-plugin .html
私が知りたいことを見逃している場合でも、設定は私がやろうとしていることのためにもっと簡単に見え、同じ名前空間内での重複クラス生成に対処することをより簡単に許可しました-この質問と同様: JAXBの複数の.xsdファイルで重複した要素定義を処理する方法はありますか? 。
着信XSDおよび対応するJavaパッケージをきめ細かく制御できるようになりました。ここに私が使用しているものに近いサンプル構成があります。
<plugin>
<groupId>org.Apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>2.3.0</version>
<configuration>
<extensions>
<extension>org.Apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${basedir}/target/generated-sources/src/main/Java</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>src/main/resources/schema/commands.xsd</xsd> <!--shares a common.xsd file causing the conflicts-->
<packagename>com.foo.bar.commands</packagename>
</xsdOption>
<xsdOption>
<xsd>src/main/resources/schema/responses.xsd</xsd>
<packagename>com.foo.bar.responses</packagename>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>
私は maven-jaxb2-plugin の著者です。
現在、maven-jaxb2-pluginはJAXB 2.1を使用しています。次のバージョンでは、JAXB 2.0およびJAXB 2.2バージョンも提供します。
「どちらのプラグインが優れているか」という議論については、 機能を確認してください 、自分で決めてください。機能が不足している場合はお知らせください。
わずかな接線で、Eclipse Indigoでmaven-jaxb2-pluginを使用するときに問題が発生しました here 。修正(拡張)が最近利用可能になりました。
これは、maven2-jaxb-pluginよりもmaven-jaxb2-pluginの推奨事項にまったく反対することを意図したものではありません。知りませんが、maven2-jaxb-pluginにも同じ問題があり、おそらく未解決だと思います。
1つは元のJAXB仕様用であり、codehausはJAXB 2.1仕様用であると推測します(今世紀中にdev.Java.netがロードされる場合は、確実に言えるでしょう)。