2009-05-21 15 views
12

प्रीफ़िक्सिंग मेरे पास जेएक्सबी का उपयोग कर एक्सएसडी फ़ाइल से जावा कक्षाएं उत्पन्न करने के लिए यह मेवेन "कार्य" है।जेएक्सबी जेनरेटेड कक्षाएं

 <!-- XML to Java classes --> 
     <plugin> 
      <groupId>com.sun.tools.xjc.maven2</groupId> 
      <artifactId>maven-jaxb-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <generatePackage>nl.compay.service</generatePackage> 
       <schemaDirectory>src/main/webapp/compay</schemaDirectory> 
      </configuration> 
     </plugin> 

एक XSD प्रकार "उपयोगकर्ता" के लिए, यह एक वर्ग "उपयोगकर्ता" (डुह) नामित उत्पन्न करता है। हालांकि, मेरे पास "उपयोगकर्ता" नामक एक जेपीए इकाई वर्ग भी है (हालांकि एक अलग पैकेज में)। क्या मैं ऊपर एक्सएमएल कॉन्फ़िगरेशन को जेएक्सबी जेनरेट किए गए वर्गों को "एक्सएमएल" जैसे कुछ उपसर्ग करने के लिए बदल सकता हूं?

उत्तर

19

यह एक आम आवश्यकता है। आप JAXB स्कीमा प्रकार के नामों को जावा क्लास नामों में कैसे अनुवादित करते हैं, यह अनुकूलित करने के लिए अतिरिक्त JAXB बाध्यकारी फ़ाइल प्रदान करके ऐसा कर सकते हैं।

ये फ़ाइलें सामान्यतः ".xjb" एक्सटेंशन में समाप्त होती हैं। आप उदाहरण के लिए, अपने स्कीमा के लिए एक बनाने की जरूरत:

<jxb:bindings version="1.0" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    jxb:extensionBindingPrefixes="xjc"> 

    <jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema"> 
     <jxb:schemaBindings> 
      <jxb:nameXmlTransform> 
       <jxb:typeName prefix="XML"/> 
       <jxb:anonymousTypeName prefix="XML"/> 
      </jxb:nameXmlTransform> 
     </jxb:schemaBindings> 
    </jxb:bindings> 

</jxb:bindings> 

के बाद आप उस किया है, xjb फ़ाइल कहीं अपने निर्माण निर्देशिका में ड्रॉप और Maven बता अनुवाद के दौरान यह का उपयोग करने के:

<includeBindings> 
    <includeBinding>mybindings.xjb</includeBinding> 
</includeBindings> 

और यहां सड़क के लिए एक संकेत है: यदि आप ऐसे पथ में हैं जिसमें रिक्त स्थान हैं (जैसे "दस्तावेज़ और सेटिंग्स \ उपयोगकर्ता \ प्रोजेक्ट") तो JAXB अजीब त्रुटियों के साथ गिर जाएगी।

+0

मेवेन-जैक्सबी 2-प्लगइन कॉन्फ़िगरेशन टैग को "बाध्यकारी शामिल" और "बाध्यकारी शामिल" की आवश्यकता होती है, न कि "शामिल बाइंडिंग" और "शामिल बाइंडिंग" – kevinmrohr

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