gpt4 book ai didi

gradle - Gradle 中的复制任务在第一次尝试时显示 "UP TO DATE"

转载 作者:行者123 更新时间:2023-12-02 09:35:28 24 4
gpt4 key购买 nike

我有一个复制任务正在尝试复制在“dependsOn”任务中提取的文件。目标文件夹包含从属性文件检索的时间戳。

task copyFilesToBuild(type: Copy, dependsOn:unzipExtFile) {
def tmpTimestampFile = file("$buildDir/tmp/timestamp.properties")
if (tmpTimestampFile.exists()) {
stampProp = new Properties()
stampProp.load(new FileInputStream(tmpTimestampFile))
def timestampFromFile=stampProp.getProperty('propfileTimestamp')
def unzippedExtFilesDir = file("$buildDir/tmp/unzipped/static/js/app")
def appBuildDir = file("$buildDir/apptmp/war/app/app_$timestampFromFile/sub")
from unzippedExtFilesDir
into appBuildDir
}
}

第一次通过我的构建(清理后),它显示“最新”(调试输出表明它正在跳过任务,因为它没有源文件。)

我尝试添加闭包来推迟评估(来自 { unzippedExtFilesDir }),并尝试将任务主体放入 doFirst 中,但都没有任何效果。我还尝试直接在“from”语句中使用 dependentOn 任务名称 (unzipExtFile),但这也不起作用。

第二次运行构建时,此任务确实运行,因此它似乎是配置和执行之间的计时问题,但我已经没有想法了。欢迎任何建议。

最佳答案

代码在配置时、任何任务运行之前读取时间戳。 (您可以通过添加 println 语句来查看这一点。)因为此时不存在时间戳文件(特别是在第一次运行时),所以没有源位置(from ...) 已配置,并且该任务被视为最新的,因为没有任何内容可复制。将整个时间戳逻辑放入 into block (into { ...; appBuildDir }) 应该可以解决问题。

关于gradle - Gradle 中的复制任务在第一次尝试时显示 "UP TO DATE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851455/

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