gpt4 book ai didi

gradle - 与eachFile的Gradle Copy任务if子句不一致,我在做什么错?

转载 作者:行者123 更新时间:2023-12-03 05:34:56 28 4
gpt4 key购买 nike

这是我的任务

task copyDeps(type: Copy) {
from configurations.compile
into 'build/lib'
eachFile {
if (it.relativePath.getFile(destinationDir).exists() && !it.relativePath.getFile(destinationDir).getName().contains("SNAPSHOT")) {
it.exclude()
}
}
}

并且应该将所有依赖项下载到build / lib目录中,除非已经存在一个具有相同名称的文件,除非它是快照。

但是,当所有文件都存在时,快照根本不会被覆盖,而应将其覆盖。

不一致的是,当至少有一个文件丢失时(无论它是否是快照都无关紧要),然后突然所有快照都会被覆盖,但非快照会被覆盖。

因此,当缺少至少一个文件时,脚本将按预期运行,但是当所有文件都存在时,它将忽略if子句的一半表达式。

几乎就像它使整个文件集的“exists()”表达式短路一样。

使用gradlew指向 gradle-5.0-bin.zip

最佳答案

似乎与此有关:gradle issue 4663

复制任务具有输入和输出的概念,并且自上次运行以来输入或输出均未更改(相同的依赖关系列表,目标目录中复制的文件的相同列表)时,复制任务被认为是最新的通过gradle。

找到替代方案:

task copyDeps() {
project.copy {
from configurations.compile
into 'build/lib'
eachFile {
if (it.relativePath.getFile(project.file('build/lib')).exists() && !it.relativePath.getFile(project.file('build/lib')).getName().contains("SNAPSHOT")) {
it.exclude()
}
}
}
}

必须进行一些编辑,因为此构造不知道destinationDir。还必须将任务移至依赖项列表下方,因为它给了我尚不了解的配置错误。

关于gradle - 与eachFile的Gradle Copy任务if子句不一致,我在做什么错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56986777/

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