手动删除文件后,Gradle Copy任务是最新的

时间:2017-07-31 02:28:31

标签: gradle

我被迫在这个项目中使用Gradle 2.3。

我正在尝试将一组依赖项从自定义配置复制到特定目录。

如果我手动删除其中一个文件,Gradle仍会将任务标记为UP-TO-DATE,我最终会得到一组不完整的文件。

task copyFiles(type: Copy) {
    from configurations.zips
    into 'zip-dir'
    configurations.zips.allDependencies.each {
        rename "-${it.version}", ''
    }
}

虽然在v4.0.2中可以正常工作。

要解决这个问题,我正在计算该目录中的文件。

task copyFiles(type: Copy) {
    outputs.upToDateWhen {
        def count = new File('zip-dir').listFiles().count { it.name ==~ /.*zip/ }
        count == configurations.zips.files.size()
    }
    from configurations.zips
    into 'zip-dir'
    configurations.zips.allDependencies.each {
        rename "-${it.version}", ''
    }
}

这个问题和版本的gradle是否已修复,是否有比我目前更好的解决方法?

1 个答案:

答案 0 :(得分:0)

您可以随时使用

运行它
outputs.upToDateWhen { false }

或不使用类型复制作为您的任务和

task copyFiles {
    doLast {
       copy {
          from configurations.zips
          into 'zip-dir'
          configurations.zips.allDependencies.each {
          rename "-${it.version}", ''
          }
       }
    }
}

请注意,这是解决方法而不是解决方案