2011-08-17 15 views
5

मुझे नवीनतम संस्करण जैक्सबी का उपयोग करने की आवश्यकता है: 2.2.4-1, लेकिन मेवेन या मेवेन-जैक्सबी 2-प्लगइन जेडीके से एक को चुनने लगता है।maven-jaxb2-plugin में JAXB संस्करण को कैसे निर्दिष्ट करें?

मैं इस तरह संस्करण निर्दिष्ट करने की कोशिश की:

<configuration> 
    <specVersion>2.2</specVersion> 
    ... 
</configuration> 

लेकिन लॉग पढ़ें: JAXB-api:

[INFO] [jaxb2:generate {execution: common}] 
[INFO] Started execution. 
[INFO] JAXB API is loaded from the [jar:file:/opt/jdk1.6.0_24/jre/lib/rt.jar!]. 
[INFO] Detected JAXB API version [2.1]. 

मैं javax.xml.bind का सही संस्करण के लिए उनकी निर्भरता जोड़ने की कोशिश की और com.sun.xml.bind: jaxb-impl, लेकिन इससे मदद नहीं मिली।

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

     <dependencies> 
      <dependency> 
       <groupId>javax.xml.bind</groupId> 
       <artifactId>jaxb-api</artifactId> 
       <version>2.2.4</version> 
      </dependency> 

      <dependency> 
       <groupId>com.sun.xml.bind</groupId> 
       <artifactId>jaxb-impl</artifactId> 
       <version>2.2.4-1</version> 
      </dependency> 
     </dependencies> 

     <executions> 
      <execution> 
       <id>common</id> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
       <configuration> 
        <specVersion>2.2</specVersion> 
        ... 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

मैं भी Maven-jaxb22-प्लगइन उपयोग करने की कोशिश लेकिन यह भी काम नहीं किया।

उत्तर

2

निम्नलिखित कोड को डिफ़ॉल्ट वेबैप से अनुकूलित किया गया है जो नेटबीन उत्पन्न करता है। यह जार को एक अस्थायी फ़ोल्डर में कॉपी करने के लिए निर्भरता प्लगइन का उपयोग करता है और इस फ़ोल्डर को अनुमोदित निर्देशिका के रूप में संकलक को निर्दिष्ट करता है ताकि यह jdk में कार्यान्वयन को ओवरराइड कर सके।

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
</properties> 

... 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir}</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax.xml.bind</groupId> 
           <artifactId>jaxb-api</artifactId> 
           <version>2.2.4</version> 
           <type>jar</type> 
          </artifactItem> 
          <artifactItem> 
           <groupId>com.sun.xml.bind</groupId> 
           <artifactId>jaxb-impl</artifactId> 
           <version>2.2.4-1</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+0

दिलचस्प विचार। मैं इसे आजमाऊंगा। इस बीच, मैं antrun का उपयोग करने के लिए वापस आ गया ... यह काम करता है लेकिन यह बहुत अच्छा नहीं है। – ivant

+0

मैंने इस दृष्टिकोण को भी आजमाया है, और यहां तक ​​कि विशिष्ट मैवेन-जैक्सबी 22-प्लगइन का उपयोग भी किया है, लेकिन मुझे अभी भी जेडीके-पता चला संस्करण मिल रहा है। – Lyle

0

मैं Jörn के समाधान का उपयोग करने का प्रयास किया है, लेकिन यह Maven-jaxb2-प्लगइन की तरह दिखता है आगे चला गया और वैसे भी rt.jar संस्करण का उपयोग किया, जैसा कि मैंने प्लगइन से कह संदेश मिला: [जानकारी] JAXB एपीआई है [जार: फ़ाइल:/सी: /jdk1.6.0_25/jre/lib/rt.jar!] से लोड किया गया।

समाधान के मेरे असफल संस्करण है कि यह कैसे निर्भरता प्लगइन का उपयोग करता है में थोड़ा अलग है, लेकिन उस का निर्माण वह सफल होता है का एक हिस्सा है ...

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <v.jaxb2-api>2.2.4</v.jaxb2-api> 
    <v.jaxb2-impl>2.2.4-1</v.jaxb2-impl> 
    <v.jaxb2-xjc>2.2.4-1</v.jaxb2-xjc> 
    <v.jaxb2-basics-jaxb>2.1.13.MR2</v.jaxb2-basics-jaxb> 
</properties> 
... 
<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>validate</phase> 
      <goals> 
      <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
      <outputDirectory>${endorsed.dir}</outputDirectory> 
      <excludeTransitive>true</excludeTransitive> 
      <includeArtifactIds>jaxb-api,jaxb-impl</includeArtifactIds> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration>       
     <source>1.6</source> 
     <target>1.6</target> 
     <fork>true</fork> 
     <meminitial>256m</meminitial> 
     <maxmem>768m</maxmem> 
     <compilerArguments> 
      <endorseddirs>${endorsed.dir}</endorseddirs> 
     </compilerArguments> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
+0

क्या होता है यह देखने के लिए डीबग जानकारी (विकल्प-एक्स) के साथ मेवेन चलाने का प्रयास करें। यह आपको एक विचार दे सकता है कि समस्या कहां है और इसे कैसे ठीक किया जाए। – ivant

0

हे सिर्फ मैं का समय बचाने के लिए करना चाहते हैं लोग।
जो लोग जैक्सबी-इम्प्ल पर काम करते हैं, संस्करण जैक्सब-इंप 2.2.4-1 संस्करण 2.2.4 की एक बग को ठीक करने के लिए है, मेटा-आईएनएफ फ़ोल्डर के तहत आईटैक-कॉमन्स-रनटाइम का पोम इसके मूल पोम 2.4-स्नैपशॉट का संदर्भ जब यह 2.4 होना चाहिए, क्योंकि यह संस्करण स्नैपशॉट नहीं है।

<parent> 
    <groupId>com.sun.istack</groupId> 
    <artifactId>istack-commons</artifactId> 
    <version>2.4-SNAPSHOT</version> 
</parent> 

इसलिए यदि आप स्नैपशॉट के साथ काम करने के लिए, इस त्रुटि के साथ तोड़ जब तक आप अपने स्थानीय भंडार पर सब कुछ जोड़ना चाहते हैं नहीं करना चाहती आप जार पर पोम में मैन्युअल रूप से इस संस्करण को अद्यतन करना पड़ सकता है। चीयर्स, मैनुअल।

संबंधित मुद्दे