2011-11-24 11 views
10

मैंने पैकेज में एक jaxb.properties फ़ाइल डाली है जहां मेरी कक्षाएं हैं जहां मैं एक अलग जेएक्सबी प्रदाता का उपयोग करता हूं (जैसा कि इस लिंक Specifying EclipseLink MOXy as Your JAXB Provider में देखा गया है) जिसका मैं उपयोग करता हूं unmarshalling।जावा पैकेज से jaxb.properties फ़ाइल मैवेन में शामिल नहीं है .war

निम्नलिखित होता है:

  • जब मैं ग्रहण से प्रोजेक्ट को चलाने/unmarshalling ठीक काम करता है, के बाद से यह jaxb.properties फ़ाइल पढ़ता अनुसूचित जनजातियों।

  • जब मैं मैवेन 3 (mvn clean install) के साथ प्रोजेक्ट का निर्माण करता हूं, तो jaxb.properties फ़ाइल पैकेज में शामिल नहीं है - इसलिए वे कक्षाएं XML फ़ाइलों को सफलतापूर्वक अनमशेल नहीं कर सकती हैं। तब मुझे मैन्युअल रूप से jaxb.properties फ़ाइल को तैनात ऐप पर नेविगेट करके, पैकेज में प्रवेश करके और फ़ाइल चिपकाने के लिए रखना होगा।

समाधान? धन्यवाद!

उत्तर

10

आपको src/main/resources में संसाधन (जैसे जैक्सब.प्रोपर्टीज) रखना चाहिए।
मुझे अभी तक कोई सबूत/दस्तावेज नहीं मिला है, लेकिन मुझे यकीन है कि मैवेन केवल src फ़ोल्डर से .java फ़ाइलों को संकलित और कॉपी करेगा।

प्रलेखन से यह स्पष्ट प्रतीत होता है कि संकलन केवल संकलित होगा और कुछ भी कॉपी नहीं करेगा। इसलिए केवल। java src/main/java के अंतर्गत फाइलों को संभाला जाएगा और बाकी सब कुछ अनदेखा कर दिया जाएगा।

संसाधन resources:resources द्वारा प्रबंधित किए जाते हैं, जो स्वचालित रूप से निष्पादित होते हैं। यह लक्ष्य src/main/resources से संसाधनों की प्रतिलिपि बनाता है।

Compile केवल src फ़ोल्डर से फ़ाइलों को संकलित करता है। संसाधन फ़ाइलें जावा फाइल नहीं हैं और इसलिए आउटपुट निर्देशिका में कॉपी/संकलित नहीं की जाएंगी।

+0

में जोड़ने के लिए परीक्षण करते हैं कि यह इस तरह से काम करते हैं और प्रतिक्रिया प्रदान करेंगे विल .. –

+0

यह काम किया? आपने इस मुद्दे को कैसे हल किया? – HDave

+0

@HDave मुझे विश्वास है कि उसने गुणों को स्रोत/मुख्य/संसाधनों में रखा है – oers

12

जैसा कि संकेत मिलता है, आपकी सर्वश्रेष्ठ शर्त maven-resources-plugin का उपयोग यह प्राप्त करने के लिए है।

 <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.5</version> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/target/classes/path/to/model/</outputDirectory> 
         <resources> 
          <resource> 
           <directory>${basedir}/src/main/resources/</directory> 
           <includes> 
            <include>jaxb.properties</include> 
           </includes> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

प्लेस directory में अपने jaxb.properties फ़ाइल और पैकेज स्थान (outputDirectory) निर्दिष्ट और इस संसाधन पैकेजिंग से पहले कॉपी कर देंगे।

+0

यह एक आकर्षण की तरह काम किया। – webDeveloper

+0

मेरे मामले में ' मान्य करें 'हिस्सा गलत था, क्योंकि फ़ोल्डर उस चरण में मौजूद नहीं था, मुझे लगता है। मैंने इसे प्रक्रिया संसाधनों में बदल दिया 'और अब यह काम करता है – kiedysktos

0

अपने pom.xml

<resources> 
     <resource> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/jaxb.properties</include> 
      </includes> 
     </resource>   
    </resources> 
संबंधित मुद्दे