2010-07-16 17 views
34

के साथ ज़िप में आंतरिक ज़िप को अनपैक करें मैं मैवेन-निर्भरता प्लगइन के माध्यम से ज़िप फ़ाइल को अनपैक कर सकता हूं, लेकिन वर्तमान में मुझे समस्या है कि उस ज़िप फ़ाइल के अंदर अन्य ज़िप फ़ाइलों में शामिल हैं और मुझे उन्हें अनपैक करने की आवश्यकता है। मैं यह कैसे कर सकता हूँ?मेवेन

उत्तर

42

आप चींटी कार्य धावक प्लगइन का उपयोग कर किसी भी फाइल को अनज़िप कर सकते हैं:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
      <id>prepare</id> 
      <phase>validate</phase> 
      <configuration> 
       <tasks> 
        <echo message="prepare phase" /> 
        <unzip src="zips/archive.zip" dest="output/" /> 
        <unzip src="output/inner.zip" dest="output/" /> 
        <unzip dest="output"> 
         <fileset dir="archives"> 
         <include name="prefix*.zip" /> 
         </fileset> 
        </unzip> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+0

मैं इसे ले कि यह आपके pom.xml फ़ाइल में डाल दिया है? –

+0

हां, यह आपके Maven 'pom.xml' फ़ाइल का हिस्सा है। –

+0

इस उदाहरण में आप एक फ़ाइल को अनजिप कर सकते हैं जो नियमित अभिव्यक्ति से मेल खाता है? जैसे

3

तुम भी प्लगइन निर्भरता का उपयोग कर सकते हैं। निर्भरता को अनपैक करने के लिए एक लक्ष्य है (http://maven.apache.org/plugins/maven-dependency-plugin/unpack-dependencies-mojo.html देखें)

+2

यह प्रतिक्रिया सही नहीं है, प्रश्न एक आंतरिक ज़िप के साथ एक फ़ाइल के बारे में है, निर्भरता नहीं। – Sergio

21

चींटी का उपयोग करते हुए किसी भी अधिक शांत नहीं है, जिप (archive.zip) फ़ाइल खोल के लिए)

http://maven.apache.org/plugins/maven-dependency-plugin/examples/unpacking-artifacts.html

नमूना कोड:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack</id> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>unpack</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>foo</groupId> 
         <artifactId>archive</artifactId> 
         <version>1.0-SNAPSHOT</version> 
         <type>zip</type> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

फ़ाइल archive.zip पहले मैवेन रिपोजिटरी में स्थापित किया जाना चाहिए। उदाहरण के लिए कार्य Attach artifact org.codehaus.mojo:build-helper-maven-plugin:build-helper:attach-artifact

+16

लेकिन यह केवल मनमानी फ़ाइलों को अनजान करता है, मनमानी फाइल नहीं। –

+0

@ OndraŽižka मेवेन के साथ आप किसी भी "मनमानी" फ़ाइल को आर्टिफैक्ट के रूप में देख सकते हैं, बस 'बिल्ड-हेल्पर: अटैच-आर्टिफैक्ट' देखें। – MariuszS

+2

@MariuszS स्थानीय फाइल सिस्टम पर मनमाने ढंग से फ़ाइल के साथ ऐसा कैसे करता है? – tojofo

7

TrueZIP Maven Plugin भी अच्छी तरह से काम करता है। नमूना config:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>truezip-maven-plugin</artifactId> 
    <version>1.2</version> 
    <executions> 
     <execution> 
      <id>copy-package</id> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <phase>package</phase> 
      <configuration> 
       <verbose>true</verbose> 
       <fileset> 
        <directory>outer.zip</directory> 
        <outputDirectory>${project.build.directory}/outer</outputDirectory> 
       </fileset> 
       <fileset> 
        <directory>${project.build.directory}/outer/inner.zip</directory> 
        <outputDirectory>${project.build.directory}/inner</outputDirectory> 
       </fileset> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Official examples

+1

कोडहॉस बंद हो रहा है, इसलिए लिंक अब "हम पुनर्गठन कर रहे हैं" पृष्ठ पर जाते हैं। –

+0

@palacsint उपरोक्त प्लगइन का लाइसेंस क्या है, मैं इसे अपने दस्तावेज़ों में नहीं ढूंढ सकता –