2014-04-03 8 views
5

मैं माता-पिता निर्देशिका के बिना एक निर्भर ज़िप फ़ाइल निकालने का प्रयास कर रहा हूं, ग्रैडल का उपयोग करके निकालने के दौरान कुछ फ़ाइल को बाहर कर दें।Gradle का उपयोग कर पहली निर्देशिका के बिना निकालने के लिए कैसे?

यहाँ मैं क्या मिल गया है और यह काम करता है लेकिन सही महसूस नहीं करता है और मैं वहाँ आशा करता हूं इस

ज़िप फ़ाइल करने के लिए एक बेहतर तरीका है कि मैं

jar tf parent-folder-name.zip 


parent-folder-name/bin/something.sh 
parent-folder-name/bin/something.bat 
parent-folder-name/lib/somelib.jar 
निकालने रहा है

विकल्प 1

task explodeToDist1(type: Copy) { 
    from zipTree(configurations.extractDist.singleFile) 
    exclude "**/lib/**" 
     eachFile { 
      def newPath = it.relativePath.segments[1..-1].join("/") 
      it.relativePath = RelativePath.parse(true, newPath) 
     } 
    into 'build/dist' 
    doLast { 
     def path = buildDir.getPath() + "/dist/parent-folder-name" 
     def dirToDelete = new File(path) 
     dirToDelete.deleteOnExit() 
    } 
} 

विकल्प 2

task explodeToDist2 << { 
     def unzipDir = new File('build/unzipTmp') 
     copy { 
      from zipTree(configurations.extractDist.singleFile) 
      into unzipDir 
     } 
     def rootZipDir = unzipDir.listFiles()[0] 
     fileTree(rootZipDir){ 
       exclude "**/lib/**" 
     }.copy { 
      into 'src/dist' 
     } 
     unzipDir.deleteDir() 
} 

मेरे लिए विकल्प 2 बेहतर महसूस करता है, लेकिन मैं Gradle में यह करने के लिए एक बेहतर तरीका है तो यकीन नहीं है?

+1

बस एक पार से लिंक है कि एक ही सवाल Gradle मंच पर उठाया गया था - http: // मंचों। gradle.org/gradle/topics/how_to_extract_without_first_directory_using_gradle – Radim

उत्तर

0

लगता है कि आपके उपयोग के मामले को अभी तक बहुत ही उपयोगकर्ता मित्र तरीके से समर्थित नहीं है। here सूचीबद्ध एक संबंधित सुविधा अनुरोध है।

यह similar stackoverflow question भी है जिसमें कुछ सुझाव हैं जो आपके पास पहले से मौजूद विकल्पों की तुलना में आसान दिखते हैं।

चूंकि ग्रेडल चींटी के साथ अच्छी तरह से एकीकृत करता है, और चींटी अनजिप कार्य फ़्लैटनिंग का समर्थन करता है तो आप उस पर भी भरोसा कर सकते हैं।

अधिक जानकारी के लिए देखें:

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

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