2014-06-30 9 views
12

मैंने एक साधारण ग्रैडल बिल्ड बनाया जो ./src/main/groovy की सामग्री को ज़िप फ़ाइल में निर्यात करता है। ज़िप फ़ाइल में ज़िप फ़ाइल के समान नाम वाले फ़ोल्डर होते हैं। मैं वितरण प्लगइन का उपयोग कर ज़िप फ़ाइल की जड़ में फ़ाइलों को कैसे प्राप्त करने के बारे में नहीं समझ सकता।ग्रैडल वितरण कार्य आउटपुट फ़ाइलें ज़िप की रूट पर नहीं

यानी gradlew clean distZip पैदा करता है:

helloDistribution-1.0.zip -> helloDistribution-1.0 -> फ़ाइलें

मैं क्या पसंद करेंगे:

helloDistribution-1.0.zip - > फाइल

मेरा बी uild.gradle फ़ाइल:

apply plugin: 'groovy' 
apply plugin: 'distribution' 

version = '1.0' 

distributions { 
    main { 
     contents { 
      from { 
       'src/main/groovy' 
      } 
     } 
    } 
} 

मैं into { 'dir' } जोड़कर लेकिन कोई लाभ नहीं हुआ समस्या को ठीक करने का प्रयास किया है।

contents { 
    from { 
     'src/main/groovy' 
    } 
    into '/' 
} 
+0

यह इस तरह से काम नहीं करेगा। मुझे लगता है कि इस तरह के पदानुक्रम बनाने का एकमात्र तरीका सादे पुराने चींटी ज़िप कार्य के साथ करना है। – Opal

उत्तर

13

into '/' का उपयोग चाल करने के लिए लगता है। यहां समाधान है जिसके साथ मैं आया:

task Package(type: Zip) { 

    from { 
     def rootScriptFiles = [] // collection of script files at the root of the src folder 
     new File('src/main/groovy/').eachFile { if (it.name.endsWith('.groovy')) rootScriptFiles.add(it) } 


     ['build/libs/',     // build binaries 
     'src/res/',     // resources 
     rootScriptFiles,    // groovy root source files 
     ] 
    } 
    baseName = pluginName 
} 
+1

यदि आप केवल build.gradle को बदलते हैं और 'gradle distZip' का आह्वान करते हैं तो आपको वांछित प्रभाव दिखाई नहीं देगा। आपको 'ग्रेडल क्लीन डिस्टजिप' को कॉल करना होगा –

1

दुर्भाग्य से, Penfold का जवाब मेरे लिए काम नहीं किया:

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