2013-05-14 75 views
0

我在gradle/groovy中是全新的。我想創建自定義任務,它會做一些事情。我的第一個問題是在任務完成時如何做某事?我可以重寫doFirst/doLast閉包嗎?也許我可以重寫一些在開始和結束時會做某些事情的方法?構造/摧毀自定義gradle任務

這是我的 「任務」

import java.nio.file.Files 

class MyCustomTask extends DefaultTask { 

    File buildDir 
    File tempDir 

    public MyCustomTask() { 
     super() 
     buildDir = project.getBuildFile().getParentFile() 
     tempDir = Files.createTempDirectory(buildDir.toPath(), "MyCustomTask").toFile() 
    } 

    @TaskAction 
    def build() { 
     println("test"); 
    } 

    // I want to delete tempDir ater task execution 

} 
+2

也許你可以使用[temporaryDir](http://www.gradle.org/docs/current/dsl/org.gradle.api.Task.html#org.gradle.api.Task:temporaryDir)位置讓Gradle爲你清理? – 2013-05-14 07:51:26

+1

臨時目錄需要在任務操作中創建(並刪除);否則,即使手頭的任務沒有運行,它也會爲Gradle的每次調用創建。而不是刪除它,最好把目錄放在'build'下面(如Tim所說)。 – 2013-05-14 09:11:28

回答

1

,因爲它說on the official Gradle help forums(如果有人問同樣的問題),您應該

  • 包裝您build()代碼在try...finally
  • 或將您的自定義任務文件夾寫入build目錄,以便在用戶進行清理時清除gradle clean
+0

謝謝。我已經使用temporaryDir作爲Ben Manes編寫並嘗試{}清理它。 – pepuch 2013-05-14 10:23:37