2016-02-06 6 views
5

मैं एक्सएसडी से जावा फाइलें उत्पन्न करने की कोशिश कर रहा हूं, लेकिन नीचे दिया गया कोड उत्पन्न नहीं होता है। अगर मैं outputDirectory को अपूर्ण करता हूं, तो यह पहले काम करता है लेकिन फ़ोल्डर को हटा देता है। clearOutputDir = false जोड़ना भी कुछ भी उत्पन्न नहीं कर रहा है।जेएक्सबी मेवेन प्लगइन कक्षाएं उत्पन्न नहीं कर रहा

<build> 
     <plugins> 
      <!-- JAXB xjc plugin that invokes the xjc compiler to compile XML schema into Java classes.--> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>jaxb2-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <goals> 
          <goal>xjc</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <!-- The package in which the source files will be generated. --> 
        <packageName>uk.co.infogen.camel.message</packageName> 
        <!-- The schema directory or xsd files. --> 
        <sources> 
         <source>${basedir}/src/main/resources/xsd</source> 
        </sources> 
        <!-- The working directory to create the generated java source files. --> 
        <!--<outputDirectory>${basedir}/src/main/java</outputDirectory> 
        <clearOutputDir>false</clearOutputDir>--> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

मैं संदेश प्राप्त हो रहा:

[INFO] --- jaxb2-maven-plugin:2.2:xjc (default) @ service-business --- 
[INFO] Ignored given or default xjbSources [/Users/aaa/development/workspace/infogen/infogen_example/service-business/src/main/xjb], since it is not an existent file or directory. 
[INFO] No changes detected in schema or binding files - skipping JAXB generation. 
+0

आपको कभी भी अपने स्रोत फ़ोल्डर में उत्पन्न नहीं करना चाहिए, लेकिन लक्षित/जेनरेट-स्रोत/xjc – jah

+0

हां, इसलिए मैंने आउटपुट डायरेक्टरी पर टिप्पणी क्यों की, लेकिन यह स्रोत उत्पन्न नहीं कर रहा है और एक ही जानकारी संदेश दे रहा है। – krmanish007

उत्तर

6

पहली बात यह है कि आप कभी नहीं, कभी, कोड src/main/java अंदर उत्पन्न करनी चाहिए है। जेनरेटेड कोड संस्करण-नियंत्रित नहीं होना चाहिए और इसे किसी भी समय हटाया जा सकता है क्योंकि इसे किसी भी तरह से पुनर्जीवित किया जाएगा।

जेनरेट कोड हमेशा target, मेवेन की बिल्ड निर्देशिका के तहत स्थित होना चाहिए। jaxb2-maven-plugintarget/generated-sources/jaxb के तहत डिफ़ॉल्ट रूप से कक्षाएं उत्पन्न करेगा और वास्तव में इसे बदलने का कोई कारण नहीं है। यदि आप ग्रहण का उपयोग कर रहे हैं, तो आपको बस इस फ़ोल्डर को बिल्डपैथ में राइट-क्लिक करके और "पथ बनाएं> स्रोत फ़ोल्डर का उपयोग करके" चुनने की आवश्यकता है।

मेवेन चलाते समय, आप इसे mvn clean install के साथ चलाएंगे: यह target फ़ोल्डर को साफ़ करेगा और स्क्रैच से सब कुछ पुन: उत्पन्न करेगा: इससे सुरक्षित और रखरखाव योग्य निर्माण होता है। आपको पता चलेगा कि इससे आपकी समस्या हल हो जाएगी: चूंकि जेनरेट की गई कक्षाएं निर्माण से पहले हटा दी जाती हैं, इसलिए अगले निर्माण के दौरान वे सही ढंग से फिर से उत्पन्न हो जाएंगे।

बेशक, अगर इस पीढ़ी प्रक्रिया लंबी है और आप इसे हर बार ऐसा करने के लिए नहीं करना चाहते हैं, तो आप Maven सिर्फ mvn install साथ चलाने के लिए और प्लगइन false को clearOutputDir की स्थापना द्वारा पहले से उत्पन्न वर्गों को दूर करने के लिए नहीं कॉन्फ़िगर कर सकते हैं। लेकिन ध्यान दें कि, जब बिल्ड थोड़ा तेज़ होगा, तो आपको अपडेट होने पर आपके एक्सएसडी में आने वाली त्रुटियों का पता नहीं लगाया जा सकता है।

+0

मैं इसे उत्पन्न करने के लिए एमवीएन संकलन का उपयोग कर रहा था, लेकिन एमवीएन स्वच्छ संकलन की कोशिश करने के बाद एक ही कोड काम किया। – krmanish007

+0

@ krmanish007 मेरी चेतावनी याद रखें हालांकि: 'src/main/java' के अंदर कोड उत्पन्न करने से केवल आपके लिए दर्द और पीड़ा होगी! :) – Tunaki

+0

यही कारण है कि इसे शुरुआत से क्यों टिप्पणी की गई थी। मैंने केवल यह देखने के लिए जोड़ा, अगर इससे इसे उत्पन्न करने में मदद मिलती है, और फिर से टिप्पणी की जाती है। – krmanish007

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