2013-10-22 55 views
0

一個單獨的目錄在我們的建設,我們這些「組件」目錄。子項目使用不同的組件組件,並且這些組件的內容必須複製到構建目錄中。因此,假設每個子項目定義包含的組件列表如下:project.ext.components = ['aaa', 'bbb', 'ccc']。這些存在於一個目錄(從項目的根目錄),如components/aaacomponents/bbb,等等。我想每個目錄的複製內容到項目的build目錄。複製的目錄內容的數組使用搖籃

基本上,如果我有這個轉換爲UNIX,我會做一個系列一樣的副本:

cp -R components/aaa/* build/ 
cp -R components/bbb/* build/ 
cp -R components/ccc/* build/ 

什麼是做到這一點的好辦法?

我可以在任務中循環使用project.ext.components並使用copy閉包,但我將如何定義任務輸入/輸出?該任務不會是Copy類型的任務,而只是一個具有doFirst的常規任務,在該循環中以及在copy關閉中,因此我們不會像我們在Copy那樣獲得爲我們定義的輸入/輸出。任務。

我在Copy DSL看到有一個includes屬性看起來很有前途,但我無法真正想出一個方法來讓它工作。

回答

2
task copy(type: Copy) { 
    into buildDir 
    components.each { 
     from "components/$it" 
    } 
} 
+0

感謝。這解決了原來的問題。但我確實有一個後續......如果我想保留路徑的「組件」部分,該怎麼辦?換句話說,在複製後,我希望有一個'build/components/aaa'目錄。 – Depressio

+1

'into buildDir; components.each {name - > into(「components/$ name」){from「components/$ name」}}'。 –

+0

啊,有道理。不知道「進入」可能是一個封閉。謝謝! – Depressio