Gradle

2016-08-23 12 views
6

में पूरी निर्देशिका कॉपी मैं इस तरह एक निर्देशिका संरचना है:Gradle

file1.txt 
file2.txt 
dir1/ 
    file3.txt 
    file4.txt 

मैं एक निर्देशिका में Gradle to copy कि पूरे संरचना का उपयोग करना चाहते हैं। मैं इस की कोशिश की:

task mytest << { 
    copy { 
     from "file1.txt" 
     from "file2.txt" 
     from "dir1" 

     into "mytest" 
    } 
} 

लेकिन यह निम्नलिखित में परिणाम:

mytest/ 
    file1.txt 
    file2.txt 
    file3.txt 
    file4.txt 

देखें, dir1 से प्रतिdir1 में फ़ाइलों की नकल की , जबकि मैं dir1ही प्रतिलिपि बनाना चाहते हैं।

क्या यह सीधे Gradle copy के साथ ऐसा करना संभव है?

अब तक, मैं केवल इस समाधान के साथ आने के लिए सक्षम किया गया है:

task mytest << { 
    copy { 
     from "file1.txt" 
     from "file2.txt" 

     into "mytest" 
    } 

    copy { 
     from "dir1" 
     into "mytest/dir1" 
    } 
} 

मेरी सरल उदाहरण के लिए वहाँ यह करने के लिए काफी नहीं है, लेकिन मेरी वास्तविक मामले में कई निर्देशिकाओं मैं प्रतिलिपि बनाना चाहते हैं देखते हैं, और मैं इतना दोहराना नहीं चाहता हूं।

उत्तर

13

आप निर्दिष्ट करने के लिए, आप प्रतिलिपि बनाना चाहते हैं जो फ़ाइलों और निर्देशिकाओं . निर्देशिका पथ के रूप में और include उपयोग कर सकते हैं:

दोनों from और into
copy { 
    from '.' 
    into 'mytest' 
    include 'file*.txt' 
    include 'dir1/**' 
} 

निर्देशिका हैं, तो आप पूरी कॉपी के साथ खत्म हो जाएगा गंतव्य निर्देशिका में स्रोत निर्देशिका का।

+0

इसके साथ समस्या यह है कि अगर मेरे पास इस फ़ोल्डर में अन्य फ़ाइलें हैं जो मैं कॉपी नहीं करना चाहता हूं। मैं 'बहिष्कृत' पैरामीटर का उपयोग कर सकता हूं, लेकिन यह त्रुटि प्रवण होगी क्योंकि अन्य उपनिर्देशिका भविष्य में जोड़े जा सकती हैं। – Kip

+0

क्या आपके लिए 'शामिल' काम करता है? मैंने जवाब देने के लिए उत्तर दिया है कि फाइल/डीआईआर जिन्हें आप प्रतिलिपि बनाना चाहते हैं, उन्हें कैसे निर्दिष्ट करें। –

+0

बहुत अच्छा काम करता है! – Kip

0

मुझे पता है कि यह थोड़ा देर हो चुकी है, लेकिन मैंने उपरोक्त @ एंड्रू समाधान की कोशिश की और यह निर्देशिका के अंदर सब कुछ कॉपी किया। "।" धीरे-धीरे एक क्रम में प्रतिनिधित्व करने के लिए आवश्यक नहीं है। तो मैं उस पर आधारित कुछ शोध किया था और this

पाया जाता है और निम्नलिखित कोड (अप-टू-डेट चेक के साथ) बनाया:

कार्य resourcesCopy() {

doLast { 
    copy { 
     from "src/main/resources" 
     into "./target/dist/WEB-INF/classes" 
    } 
    copy { 
     from "GeoIP2.conf" 
     into "./target/dist/WEB-INF" 
    } 
} 

}

-1

शायद भी मददगार: fileTree का उपयोग रिकर्सिवली एक पूरी निर्देशिका कॉपी करने, जैसे,

task mytest << { 
    copy { 
     from fileTree('.') 
     into "mytest" 
    } 
}