我有以下任务:
preBuild.dependsOn“copyConfigFile”
task copyConfigFile(type: Copy) {
from 'ConfigSources/VersionInfo.java'
into 'src/main/java/com/company/gradleexperiments/'
expand([changeset: "12345",
changeset_time: "the time",
changeset_date : "the date"])
}
除了最初复制文件之外,它的工作方式正常,如果我更改了展开和构建中的其中一个值,那么文件不会被覆盖(目标目标中文件的创建时间戳保持为上次它建成了。)
我做了一些谷歌搜索和搜索过去关于这个主题的问题,但我得到的答案是,默认情况下gradle复制任务总是应该覆盖文件。如果是这样,那么为什么我不这样做呢?
答案 0 :(得分:2)
这是一个非常古老的错误:复制任务不会将传递的值视为输入扩展,因此即使这些值已更改,也认为它是最新的。
您可以对此问题进行投票here。
通过明确地将扩展值添加到输入,这应该相对容易。例如:
task copyConfigFile(type: Copy) {
from 'ConfigSources/VersionInfo.java'
into 'src/main/java/com/company/gradleexperiments/'
def values =
['changeset': '12345',
'changeset_time': 'the time',
'changeset_date': 'the date'];
inputs.properties(values);
expand(values);
}