Gradle复制任务不会覆盖文件

时间:2016-01-28 23:19:24

标签: gradle android-gradle

我有以下任务:

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复制任务总是应该覆盖文件。如果是这样,那么为什么我不这样做呢?

1 个答案:

答案 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);
}