2013-05-14 118 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