Maven JAXB プラグインの違い
-
19-09-2019 - |
質問
その2つと決めました JAXB のプラグイン メイビン いくつかの異なる構成を備えた 2 つが存在します。
1 つは Sun からのものです。 http://jaxb.dev.java.net/jaxb-maven2-plugin/, 、もう 1 つは Mojohaus からのものです。 http://mojohaus.org/jaxb2-maven-plugin/
この 2 つのプラグインのうち、どちらがお勧めですか?
ありがとうマット。私の小さな研究プロジェクトで、Sunner から提供されているまったく別のプラグインがあることがわかりました。
<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-プラグイン (https://github.com/highsource/maven-jaxb2-plugin)
- の maven-jaxb-プラグイン (https://jaxb.dev.java.net/jaxb-maven2-plugin/)
- の jaxb2-maven-プラグイン (https://github.com/mojohaus/jaxb2-maven-plugin)
のコメントに基づいて、 このスレッド, 私がいつも使っているのは、 maven-jaxb2-プラグイン (すなわち、プラグイン #1):
org.jvnet.jaxb2.maven2について:maven-jaxb2-plugin vers com.sun.tools.xjc.maven2:maven-jaxb-plugin、私の観点からは間違いなく最初のものです(http://maven-jaxb2-plugin.java.net/).
このプラグインには、com.sun.tools.xjc.maven2:maven-jaxb-pluginよりもはるかに多くの機能があり、開発はアクティブです。最後に、私は著者の一人です:)そして、私たちは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 つのプラグインを試しました (ここにも含まれています)。
- maven-jaxb2-プラグイン (http://maven-jaxb2-plugin.java.net/)
- maven-jaxb-プラグイン (https://jaxb.dev.java.net/jaxb-maven2-plugin/)
- jaxb2-maven-plugin (http://mojo.codehaus.org/jaxb2-maven-plugin/)
私は最終的に 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-プラグイン.
maven-jaxb2-plugin は現在 JAXB 2.1 を使用しています。次のバージョンでは、JAXB 2.0 および JAXB 2.2 バージョンも提供する予定です。
「どのプラグインが良いか」という議論については、 特徴をチェックする, 、自分で決めてください。不足している機能がある場合はお知らせください。
- maven-jaxb2-plugin は、Oracle/Sun による JAXB リファレンス実装を使用します。
- cxf および jaxb2-maven-plugin は Apache Xerces を使用します
わずかな接線の場合:私は<のhref = "https://stackoverflow.com/questions/6468204/how-does-one-get掲載Eclipseのインディゴとのmaven-JAXB2 - プラグインの使用に問題がありました-jaxb-生成-源-へ-日食-ビルドパスアンダーのM2e-IND ">ここを。修正(拡張子)が最近入手可能になっています。
このはMaven2を-JAXB-プラグインオーバーのmaven-JAXB2 - プラグインの勧告で、すべてで、反対するものではありません。私は知らないが、私はMaven2を-JAXB-プラグインが同じ問題を抱えていることを期待して、おそらく未解決ます。
私は1つは、元のJAXB仕様のためのものであり、Codehausの1は、JAXB 2.1仕様のためである(とdev.java.netはいくつかの時間今世紀をロードするならば、私は確かに言うことができるだろう)ことを推測しますます。