2012-05-29 11 views
18

एक युद्ध फ़ाइल बनाते समय मैं एक स्थान से जार का एक सेट युद्ध के अंदर एक फ़ोल्डर में कॉपी कर रहा हूं। जबकि फाइलों की प्रतिलिपि बनाई जाती है, हालांकि मुझे लगता है कि वे दूषित हो जाते हैं क्योंकि युद्ध के बाहर ले जाने वाले जार की एक ही कक्षा फाइलें डीबगर के साथ खुलती हैं जबकि यह युद्ध फ़ाइल से लेने के बाद नहीं खुलती है।मेर फ़ाइल के साथ निर्माण करते समय जार फ़ाइल दूषित हो जाती है

यह मैं कहाँ जार

<execution> 
    <id>copy-jars</id> 
    <phase>process-resources</phase> 
    <goals> 
     <goal>copy-resources</goal> 
    </goals> 
    <configuration> 
     <outputDirectory>${basedir}/target/${project.artifactId}-${buildNumber}/somefolder</outputDirectory> 
     <resources> 
      <resource> 
       <directory>SomeSourceDirectory</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>**/**</include> 
       </includes> 
      </resource> 
     </resources> 
    </configuration> 
</execution> 

SomeSourceDirectory कुछ जार और कुछ अन्य फ़ाइलों परिणाम है नकल मेरी युद्ध pom.xml का एक हिस्सा है: myWar/somefolder/a.jar लेकिन जब मैं एक debugger..i में इस जार के अंदर कक्षाएं खोलने WinZip में त्रुटि मिलती है कि

Invalid compressed data to extract. 
Severe Error: Compressed data is invalid 

हालांकि एक ही कक्षा फ़ाइल जब मैं मूल के बाहर यानी फ़ोल्डर में देखने देखी जा सकती है युद्ध। तो जार की प्रतिलिपि करते समय क्या कोई गलती है? धन्यवाद।

+0

जार समान हैं? वही फाइलसाइज, शायद एक ही एमडी 5 चेकसम ... – cha0site

+0

फाइलसाइज समान है हालांकि एमडी 5 चेकसम अलग दिखता है..मैं http://divityworkshop.net/software/md5/index.html से डाउनलाड किया गया md5.jar के साथ चेक किया गया .. टी समझते हैं क्यों अलग चेकसम ?? – pranay

उत्तर

41

<filtering>true</filtering> हटाएं, यह जार फ़ाइलों को दूषित करता है।

+0

बढ़िया! बहुत बहुत धन्यवाद Emmanuel .. यह काम किया :) लेकिन अभी भी सोच रहा है क्यों मैवेन इस विचित्र व्यवहार है ?? फ़िल्टरिंग क्यों उपयोगी है? – pranay

+3

फ़िल्टरिंग उपयोगी है जब आप उदाहरण के लिए प्रोजेक्ट संस्करण के संदर्भ वाले टेक्स्ट संसाधनों की प्रतिलिपि बनाते हैं। बाइनरी फाइलों पर लागू यह सामग्री को दूषित कर देगा। –

+0

फिर से धन्यवाद :) – pranay

9

इसके अलावा, आप अंदर जार भ्रष्ट बिना Maven छानने का उपयोग करने के लाभ जारी रख सकते हैं

हम एक्सटेंशन फ़िल्टर्ड से जार या निकाल सकते हैं (हाँ मैं अंदर जार के साथ पैकेज और भी छानने उपयोग करने की आवश्यकता है)।

माता पिता पोम की वें pluginManagement भाग में हम इस विन्यास

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <encoding>${project.build.sourceEncoding}</encoding> 
     <nonFilteredFileExtensions> 
     <nonFilteredFileExtension>jar</nonFilteredFileExtension> 
     <nonFilteredFileExtension>pdf</nonFilteredFileExtension> 
     <nonFilteredFileExtension>swf</nonFilteredFileExtension> 
     <nonFilteredFileExtension>zip</nonFilteredFileExtension> 
     <nonFilteredFileExtension>bz2</nonFilteredFileExtension> 
     <nonFilteredFileExtension>gz</nonFilteredFileExtension> 
     <nonFilteredFileExtension>acp</nonFilteredFileExtension> 
     <nonFilteredFileExtension>bin</nonFilteredFileExtension> 
     <nonFilteredFileExtension>odt</nonFilteredFileExtension> 
     <nonFilteredFileExtension>doc</nonFilteredFileExtension> 
     <nonFilteredFileExtension>xls</nonFilteredFileExtension> 
     </nonFilteredFileExtensions> 
    </configuration> 
    </plugin> 

नोट हम जार एक्सटेंशन जोड़ के साथ-साथ डिफ़ॉल्ट Maven बाहर रखा गया फ़ाइल प्रकार (अपने एक ज़िप सब के बाद) डाल दिया।

संग्रह के भ्रष्टाचार से बचने के अलावा यह प्रक्रिया को गति देता है क्योंकि इसे बड़ी फ़ाइलों को फ़िल्टर करने की आवश्यकता नहीं होती है।

0

मैं जब मैं चींटी में मेरे प्रति कार्य करने के लिए

<copy ...> 
<fileset ... /> 
<filterchain> 
    <tokenfilter> 
     <replacestring from="..." to="..." /> 
    </tokenfilter> 
</filterchain> 
</copy> 

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

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