मावेन JAXB प्लगइन्स का अंतर


126

मैंने निर्धारित किया है कि Maven 2 के लिए दो JAXB प्लगइन्स मौजूद हैं, कुछ अलग कॉन्फ़िगरेशन के साथ।

एक सूर्य से है: http://jaxb.dev.java.net/jaxb-maven2-plugin/ , दूसरा मोजोहास से: http://mojohaus.org/jaxb2-maven-plugin/

इन दो प्लगइन्स में से किसकी सिफारिश की जा सकती है?


धन्यवाद मैट। मेरे छोटे से शोध प्रोजेक्ट पर, मैंने पाया कि सूर्य के प्रकाश से आने वाला एक और प्लगइन है:

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

और वह एक:

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

और अभी भी कोडहाउस से एक है।

जवाबों:


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-प्लगइन बनाम com.sun.tools.xjc.maven2: Maven-JAXB-प्लगइन, देखने के अपनी बात से यह निश्चित रूप से पहले से एक है ( 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>

1
विन्यास के लिए Thx। अंत में मैं कोडहाउस प्लगइन का उपयोग करता हूं, जो मुझे मेरी जरूरतों के लिए समान क्षमताएं प्रदान करता है। जहाँ तक मैंने देखा है केवल सिंटैक्स अलग है।
cuh

Wavapache.org/jaxme/mp के बारे में क्या जो सीधे मावेन की साइट पर उल्लिखित है?
RCL

1
@rcl: इसके बारे में बहुत कुछ नहीं कह सकता लेकिन जब से इसे 4 साल से अधिक समय से अपडेट नहीं किया गया है, मुझे यकीन नहीं है कि मैं इसका उपयोग करूंगा। मैं सिर्फ maven-jaxb2-plugin से खुश हूं ।
पास्कल थिवेंट

1
# 1 के लिए, प्रलेखन की मेजबानी करने वाली साइट आज डाउन हो गई है। confluence.highsource.org/display/MJIIP/User+Guide क्या यह प्रोजेक्ट इस सक्रिय है?
आरडीएस

2
@Gregor maven-jaxb2-pluginको अब GitHub पर होस्ट किया गया है । प्रलेखन विकि में है
15

44

मैंने हाल ही में ऊपर वर्णित तीन प्लग-इन की कोशिश की है (यहाँ भी शामिल है):

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

मैंने एक चौथा विकल्प का उपयोग करते हुए समाप्त किया: CXF XJC Maven Plugin http://cxf.apache.org/cxf-xjc-plugin.html

अगर मुझे कुछ याद आ रहा है, जिसे मैं जानना चाहूंगा, लेकिन जो मैं करने की कोशिश कर रहा था, उसके लिए कॉन्फ़िगरेशन अधिक सीधा लग रहा था और मुझे आसानी से एक ही नाम स्थान के भीतर डुप्लिकेट क्लास पीढ़ी से निपटने की अनुमति दी - इस प्रश्न के समान: क्या कोई है JAXB में कई .xsd फ़ाइलों में डुप्लिकेट तत्व परिभाषाओं से निपटने का तरीका?

अब मेरे पास आने वाले XSD और संबंधित जावा पैकेज पर दानेदार नियंत्रण है; यहाँ एक नमूना विन्यास है जिसका मैं उपयोग कर रहा हूँ।

 <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

क्या किसी को पता है कि क्या इसके लिए एक एक्लिप्स एम 2 कनेक्टर है? मैंने कुछ काम किया और एक नहीं मिला। उम्मीद है कि मैं सिर्फ इसलिए चूक गया क्योंकि मुझे यह विकल्प पसंद है।
user944849

cxf-xjc-plugin में 2017 के रूप में ग्रहण कनेक्टर है। लेकिन मैं कोड को मैन्युअल रूप से मावेन चलाने और स्रोत निर्देशिका को जोड़ने की समस्या नहीं देखता हूं। वास्तव में, मेरा अनुभव यह है कि उत्पन्न वर्ग (JAXB, XMLBeans) के साथ परियोजनाएं बेहतर ढंग से बंद रहती हैं और बाइनरी फॉर्म (जार) पर निर्भर होती हैं। तब IDE तेजी से काम करता है और कोई क्लासपैथ मुद्दे नहीं हैं (विशेष रूप से XMLBeans के साथ)।
व्येनतिस बिवाईनेस

सीएक्सएफ एक्सजेसी मावेन प्लगिन की तरह दिखता है जो केवल स्कीमा से जावा स्रोतों को उत्पन्न करने का समर्थन करता है, और जेक्सब एनोटेशन से स्कीमा उत्पन्न करने में सक्षम नहीं है।
अलेबू

19

मैं maven-jaxb2-plugin का लेखक हूं ।

Maven-jaxb2-plugin वर्तमान में JAXB 2.1 का उपयोग करता है। अगले संस्करणों में हम JAXB 2.0 और JAXB 2.2 संस्करण भी प्रदान करेंगे।

"कौन सा प्लगइन बेहतर है" चर्चा के लिए, सुविधाओं की जांच करें , खुद तय करें। अगर आपको कुछ कार्यक्षमता याद आती है तो मुझे बताएं।


Maven-jaxb2-plugin का उपयोग करके कक्षाओं से स्कीमा उत्पन्न करना संभव है? या प्लगइन केवल xsd-> जावा का समर्थन करता है?
Jörg

वर्तमान में यह केवल xsd-> जावा है।
lexicore

क्या नाम 'maven-jaxb2-plugin' मावेन प्लगइन नामकरण सम्मेलनों का उल्लंघन नहीं करता है या यह एक आधिकारिक मावेन प्लगइन है? मुझे नाम पर कोई आपत्ति नहीं है, लेकिन जैसा कि कभी भी अपडेट नहीं किया गया था, मुझे लगा कि प्लगइन अब और नहीं बना रहेगा।
FrVaBe

प्लगइन काफी पुराना है, यह एक स्थापित सम्मेलन बनने से पहले स्थापित किया गया था। और jaxb2-maven-plugin को पहले ही वापस ले लिया गया था। मुझे लगता है कि यहां नाम की टक्कर से बचना महत्वपूर्ण है। हालांकि आजकल प्लगइन का निर्माण भी इन नामकरण सम्मेलनों को लागू करता है तो शायद मुझे वैसे भी पलायन करना होगा।
lexicore

3
@lanoxx नहीं, यह नहीं है। यह आमतौर पर URL से स्कीमा संकलित करने की अनुशंसा नहीं की जाती है। स्कीमा की स्थानीय प्रतियां बनाएं और लिंक को फिर से लिखने के लिए कैटलॉग फ़ाइलों का उपयोग करें।
लेक्सिकोर

3
  • maven-jaxb2-plugin Oracle / Sun द्वारा JAXB संदर्भ कार्यान्वयन का उपयोग करता है
  • cxf और jaxb2-maven-plugin Apache Xerces का उपयोग करते हैं

2

एक मामूली स्पर्शरेखा पर: यहां पोस्ट किए गए ग्रहण इंडिगो के साथ maven-jaxb2-plugin के उपयोग के साथ एक समस्या थी । एक फ़िक्स (विस्तार) हाल ही में उपलब्ध हुआ है।

यह बिल्कुल भी असहमत नहीं है, maven2-jaxb-plugin पर maven-jaxb2-plugin की सिफारिश के साथ। मुझे नहीं पता, लेकिन मुझे उम्मीद है कि maven2-jaxb-plugin में एक ही समस्या है, शायद अनसुलझे।


0

मुझे लगता है कि एक मूल JAXB विनिर्देश के लिए है और एक कोड JAXB 2.1 विनिर्देशन के लिए है (और अगर dev.java.net इस सदी में कुछ समय लोड करेगा, तो मैं निश्चित रूप से कहना चाहूंगा)।


हाँ, और अगर org.jvnet.jaxb2.maven2 प्लगइन को डाउलोड करना संभव होगा, तो मैं उनकी तुलना करूँगा । जावा के रेपो के बाद से यह गेम से बाहर होने वाला प्लगइन प्रदान नहीं करता है, हालांकि कॉन्फ़िगरेशन-सिंटैक्स थोड़ा अधिक सुविधाजनक लगता था।
cuh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.