【问题标题】:Construct/Destruct custom gradle task构造/销毁自定义 gradle 任务
【发布时间】:2013-05-14 07:02:49
【问题描述】:

我是 gradle/groovy 的新手。我想创建自定义任务来做一些事情。我的第一个问题是任务完成后如何做某事?我可以覆盖 doFirst/doLast 闭包吗?也许我可以覆盖一些在开始和结束时会做某事的方法?

这是我的“任务”

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

}

【问题讨论】:

  • 也许您可以使用temporaryDir 位置并让Gradle 为您清理?
  • 临时目录需要在任务动作中创建(和删除);否则,它将为 Gradle 的 每次调用 创建,即使手头的任务没有运行。与其删除它,不如将目录放在build 下(正如蒂姆所说)。

标签: groovy gradle


【解决方案1】:

正如上面所说的on the official Gradle help forums(有人问过同样的问题),你应该要么

  • 将您的 build() 代码包装在 try...finally 块中
  • 或将您的自定义任务文件夹写入build 目录,以便在用户执行gradle clean 时对其进行清理

【讨论】:

  • 谢谢。我使用了 Ben Manes 所写的temporaryDir,并尝试{}catch{}对其进行清理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
  • 2013-08-21
  • 2017-01-01
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多