2010-03-12 115 views
113

我已經確定存在Maven 2的兩個JAXB插件,並有一些不同的配置。Maven JAXB插件的區別

的一個是來自Sun:http://jaxb.dev.java.net/jaxb-maven2-plugin/,另外從Mojohaus:http://mojohaus.org/jaxb2-maven-plugin/

這兩個插件可以推薦?


謝謝馬特。在我小的研究項目,我發現,有相當另一個插件從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之一。

回答

93

我們來總結一下。我們有:

  1. maven-jaxb2-pluginhttps://github.com/highsource/maven-jaxb2-plugin
  2. maven-jaxb-pluginhttps://jaxb.dev.java.net/jaxb-maven2-plugin/
  3. jaxb2-maven-pluginhttps://github.com/mojohaus/jaxb2-maven-plugin

基於對this thread的意見,我一直使用的maven-jaxb2-plugin (即插件#1):

關於 org.jvnet.jaxb2.maven2:Maven的JAXB2-插件 與 com.sun.tools.xjc.maven2:Maven的JAXB的插件, 從我的角度來看,這絕對是 第一個 (http://maven-jaxb2-plugin.java.net/)。

這個插件有更多的功能比 com.sun.tools.xjc.maven2:Maven的JAXB的插件, 發展是積極的。最後, 我是其中一位作者:),我會說 我們與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用於配置。最後,我使用了codehouse插件,這爲我的需求提供了相同的功能。就我所見,只有語法不同。 – cuh 2010-03-16 16:14:47

+0

http://ws.apache.org/jaxme/mp/在Maven的網站上直接提到的是什麼? – rcl 2010-07-19 19:18:41

+1

@rcl:不能多說,但由於它已經超過4年沒有更新,所以我不確定我會使用它。我對[maven-jaxb2-plugin](https://maven-jaxb2-plugin.dev.java.net/)感到滿意。 – 2010-07-19 19:29:15

0

我猜想一個是針對原始JAXB規範,另一個是針對JAXB 2.1規範的codehaus(如果dev.java.net會在本世紀加載一些時間,我可以肯定地說)。

+0

呀,如果有可能下載** org.jvnet.jaxb2.maven2插件**我會比較它們。由於java的回購沒有提供插件,所以它不在遊戲中,儘管配置語法看起來更方便一些。 – cuh 2010-03-12 14:29:23

19

我的maven-jaxb2-plugin作者。

maven-jaxb2-plugin當前使用JAXB 2.1。在接下來的版本中,我們還將提供JAXB 2.0和JAXB 2.2版本。

至於「哪個插件更好」的討論,check the features,自己決定。讓我知道如果你錯過了一些功能。

+0

是否可以使用maven-jaxb2-plugin從類生成模式?或者該插件僅支持xsd-> Java? – 2013-05-21 03:47:34

+0

目前它只是xsd-> java。 – lexicore 2013-05-22 06:25:45

+0

名稱'maven-jaxb2-plugin'是否違反[Maven插件命名約定](https://maven.apache.org/guides/plugin/guide-java-plugin-development。html#Plugin_Naming_Convention_and_Apache_Maven_Trademark)還是官方的maven插件?我不介意這個名字,但因爲它從未被更新過,我認爲這個插件不會再被維護。 – FrVaBe 2014-03-20 09:18:47

2

在一個小小的切線上:在Eclipse Indigo中使用maven-jaxb2-plugin時出現問題,我發佈了here。修正(擴展)最近已經可用。

這並不意味着完全不同意maven-jaxb2-plugin與maven2-jaxb-plugin的建議。我不知道,但我期望maven2-jaxb-plugin具有相同的問題,可能無法解決。

36

我最近嘗試了上述(這裏包括在內)中提到的三個插件:

  1. 行家-JAXB2-插件(http://maven-jaxb2-plugin.java.net/
  2. 行家,JAXB的插件(https://jaxb.dev.java.net/jaxb-maven2-plugin/)
  3. 的JAXB2-行家-插件(http://mojo.codehaus.org/jaxb2-maven-plugin/

我結束了使用第四選項:的CXF XJC Maven插件http://cxf.apache.org/cxf-xjc-plugin.html

如果我錯過了一些我想知道的內容,但配置看起來更直接,因爲我正在嘗試做的事情,並且更容易讓我在相同的命名空間內處理重複的類生成 - 與此類似問題:Is there a way to deal with duplicate element definitions across multiple .xsd files in JAXB?

我現在已經精細控制每個傳入的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-05-06 22:09:33

+0

有誰知道是否有Eclipse m2e連接器?我做了一些Google搜索,沒有找到。希望我錯過了,因爲我喜歡這個選項。 – user944849 2013-05-14 14:54:59

+0

cxf-xjc-plugin自2017年起擁有Eclipse連接器。但我沒有看到手動生成代碼並添加源代碼目錄的問題。事實上,我的經驗是,生成類(JAXB,XMLBeans)的項目最好保持關閉狀態,並以二進制形式(jar)爲依據。然後,IDE工作得更快,並且沒有類路徑問題(特別是對於XMLBeans)。 – 2017-04-14 22:10:59

3
  • Maven的JAXB2-插件使用由甲骨文/ Sun的JAXB參考實現
  • CXF和JAXB2 - Maven的插件使用Apache Xerces的