2013-09-16 86 views
1

如何在任務執行後同步兩個目錄?我能做到這一點是這樣的:使用Gradle同步目錄

task syncDirs(type: Sync) { 
    ... 
} 

task someTask { 
    doLast { 
     syncDirs.execute() 
    } 
} 

但法「執行」是內部的,我必須避免它。
感謝您提前回答。

回答

1

根據您的具體需求,可以使用syncDirs.dependsOn(someTask),或致電deletecopy方法someTask.doLast(這是目前是如何Sync實現)。

+1

我想將「someTask」和同步作爲單個動作執行,所以我確實在「doLast」中使用了「copy」和「ant.delete」方法。但我認爲既然「項目」有方法「複製」,即類似於「複製」任務,那麼採用類似於「同步」任務的方法「同步」會很好。無論如何謝謝你的答案。 – briarheart

+0

您可以使用Gradle的'delete'而不是'ant.delete'。 –

+0

是的,但據我所知,Gradle的「刪除」不允許使用通配符(例如'include:「**/*。java」')。 – briarheart

1
task myTask << { 

    copy { 
     from 'src_dir' 
     into 'dst_dir' 
     include 'myfile.txt' 
    } 

    sync { 
     from "src_dir/foo" 
     into "dst_dir/bar" 
    } 
} 

在Gradle 1.10中,您可以在單個任務中執行復制文件和同步目錄等任務。我更喜歡這樣做有單獨的任務進行復制和同步。

對於同步,如上所述做單獨刪除和複製的想法看起來很乏味。我很高興我可以撥打sync來做到這一點。

+0

是的,當我要爲自己的任務編寫自己的插件時,我找到了方法「sync」。 :)無論如何謝謝你的答案。 – briarheart

+0

其他任務中的同步塊在2.0中似乎已損壞或已被刪除。你有沒有經歷過? – billmag