gpt4 book ai didi

java - Gradle 删除定义为任务输出的目录(陈旧目录)

转载 作者:搜寻专家 更新时间:2023-10-31 20:17:18 25 4
gpt4 key购买 nike

我有一个 unzipData gradle 任务定义如下:

task unzipFile(type: Copy) {
dependsOn mkdirTrash
dependsOn downloadFile

from zipTree(file("$trashDir/file.zip"))
into trashDir
}

任务将存档内容直接解压缩到存档本身的目录中(在 trash 目录中,这是所有任务工件的根,只有在所有准备任务完成后才能删除)。

在我将 gradle wrapper 更新到版本 4.2.1 之前一切正常。

任务执行开始产生错误:

FAILURE: Build failed with an exception.

* What went wrong:
Cannot expand ZIP 'trash/file.zip' as it does not exist.

在调试输出中,我看到 gradle 删除了整个 trash 目录

> Task :unzipFile
11:56:23.145 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Task :unzipFile' started
11:56:23.145 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Starting to execute task ':unzipFile'
11:56:23.145 [INFO] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Putting task artifact state for task ':unzipFile' into context took 0.0 secs.
11:56:23.204 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Clean stale outputs' started
11:56:23.204 [INFO] [org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter] Deleting stale output file: /.../trash

据我所知是gradle的新特性 https://docs.gradle.org/4.2-rc-1/release-notes.html#safer-handling-of-stale-output-files

文档说只有注册为清理任务目标的目录源集输出 是陈旧的。我想,Copy 任务是 source set 之一,它的输出必然会被删除。

我想知道这个功能有什么优势?是否有可能禁止清理特定目录?有什么不脏的解决方法吗?

最佳答案

我有同样的问题,关注this approach它对我有用,在你的情况下它会是这样的:

sourceSets {
main {
output.dir("$trashDir", builtBy: 'unzipFile')
}
}

task unzipFile(type: Copy) {
dependsOn mkdirTrash
dependsOn downloadFile
from zipTree(file("$trashDir/file.zip"))
into trashDir
outputs.dir sourceSets.main.output.resourcesDir
}

关于java - Gradle 删除定义为任务输出的目录(陈旧目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46807434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com