Maven JAXBプラグインの違い


126

Maven 2 用の2つのJAXBプラグインが存在し、構成が異なることが判明しました。

:1は、Sunからであるhttp://jaxb.dev.java.net/jaxb-maven2-plugin/、Mojohausから他:http://mojohaus.org/jaxb2-maven-plugin/

これらの2つのプラグインのどちらを推奨できますか?


マットに感謝します。私の小さな研究プロジェクトで、Sunnersからやって来る別のプラグインがあることがわかりました。

<groupId>com.sun.tools.xjc.maven2</groupId>  
<artifactId>maven-jaxb-plugin</artifactId>  

そしてそれ:

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>

そして、まだCodehouseのものです。

回答:


104

まとめましょう。我々は持っています:

  1. Mavenの-JAXB2・プラグインhttps://github.com/highsource/maven-jaxb2-plugin
  2. Mavenの-JAXB -プラグインhttps://jaxb.dev.java.net/jaxb-maven2-plugin/
  3. JAXB2-のMavenプラグイン- https://github.com/mojohaus/jaxb2-maven-plugin

このスレッドのコメントに基づいて、私は常に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>

1
構成のThx。最後に、コードハウスプラグインを使用します。これにより、自分のニーズに同じ機能が提供されます。私が見た限りでは、構文のみが異なります。
10

Mavenのサイトで直接言及されているws.apache.org/jaxme/mpはどうですか?
rcl、

1
@rcl:それについてはあまり言えませんが、4年以上更新されていないため、使用するかどうかはわかりません。maven-jaxb2-pluginに満足しています
Pascal Thivent 2010

1
#1に関しては、ドキュメントをホストしているサイトが今日ダウンしているようです。confluence.highsource.org/display/MJIIP/User+Guideこのプロジェクトはアクティブですか?
RDS

2
@Gregor maven-jaxb2-pluginGitHubでホストされています。ドキュメントはwikiにあります
lexicore 2014年

44

私は最近、上記の3つのプラグインを試しました(ここにも含まれています)。

  1. maven-jaxb2-plugin(http://maven-jaxb2-plugin.java.net/
  2. maven-jaxb-plugin(https://jaxb.dev.java.net/jaxb-maven2-plugin/)
  3. jaxb2-maven-plugin(http://mojo.codehaus.org/jaxb2-maven-plugin/

最終的に4番目のオプションを使用しました。CXFXJC Mavenプラグイン http://cxf.apache.org/cxf-xjc-plugin.html

私は何かが欠けていた場合、私は知りたいのですが、構成は私がやろうとしていたもののためのより簡単なようで、より簡単に、私は同じ名前空間内の重複クラスの生成に対処するために許可される-この質問に似て:aがあります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>

1
素晴らしい提案。私はこれを試しました、そしてそれは魅力のように働きました。ありがとう。
SGB 2013年

このためのEclipse m2eコネクタがあるかどうか誰かが知っていますか?私はいくつかグーグルをしました、そして、それを見つけませんでした。このオプションが気に入ったので、見逃してしまったことを願っています。
user944849

cxf-xjc-pluginには2017年の時点でEclipseコネクターがあります。しかし、mavenを手動で実行してソースディレクトリを追加するコードを生成する問題は発生しません。実際、私の経験では、生成されたクラス(JAXB、XMLBeans)を含むプロジェクトは閉じたままにして、バイナリ形式(jar)で依存する方がよいということです。次にIDEはより高速に動作し、クラスパスの問題はありません(特にXMLBeansを使用)。
Vytenis Bivainis 2017

CXF XJC MavenプラグインはスキーマからのJavaソースの生成のみをサポートしており、Jaxbアノテーションからスキーマを生成することはできません。
アレブ

19

私はmaven-jaxb2-pluginの作者です。

maven-jaxb2-pluginは現在JAXB 2.1を使用しています。次のバージョンでは、JAXB 2.0およびJAXB 2.2バージョンも提供します。

「どちらのプラグインが優れているか」という議論については、機能を確認し、自分で決めてください。機能が不足している場合はお知らせください。


maven-jaxb2-pluginを使用してクラスからスキーマを生成することは可能ですか?または、プラグインはxsd-> Javaのみをサポートしますか?
ヨルク2013年

現在はxsd-> javaのみです。
Lexicore 2013年

「maven-jaxb2-plugin」という名前はMavenプラグインの命名規則に違反していませんか、それとも公式のMavenプラグインですか?名前は気にしませんが、更新されなかったので、プラグインはもうメンテナンスされないと思いました。
FrVaBe 2014年

プラグインはかなり古く、これが確立された慣例になる前に受け入れられました。そして、jaxb2-maven-pluginはすでに当時使用されていました。ここでは名前の衝突を避けることが重要だと思います。ただし、最近のプラグインビルドでは、これらの命名規則も適用されているため、とにかく移行する必要があります。
lexicore 2014年

3
@lanoxxいいえ、違います。通常、URLからスキーマをコンパイルすることはお勧めしません。スキーマのローカルコピーを作成し、カタログファイルを使用してリンクを書き換えます。
lexicore 14

3
  • maven-jaxb2-pluginはOracle / SunによるJAXBリファレンス実装を使用します
  • cxfおよびjaxb2-maven-pluginはApache Xercesを使用します

2

少し正直に言うと、ここに投稿したEclipse Indigoでのmaven-jaxb2-pluginの使用に問題がありました。修正(拡張)が最近利用可能になりました。

これは、maven2-jaxb-pluginよりもmaven-jaxb2-pluginを推奨することにまったく同意しないことを意味するものではありません。わかりませんが、maven2-jaxb-pluginにも同じ問題があり、おそらく未解決であることを期待しています。


0

1つは元のJAXB仕様用であり、codehausはJAXB 2.1仕様用であると思います(そして、dev.java.netが今世紀中にロードされる場合は、確実に言えるでしょう)。


ええ、そしてもしorg.jvnet.jaxb2.maven2プラグインをダウンロードできるとしたら、それらを比較します。javaのリポジトリはプラグインを提供しないので、それはゲームの外にありますが、構成構文はもう少し便利に見えました。
10
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.