Предполагается ли, что Gradle сделает недействительным свой кэш задач при изменении определения задачи в скрипте сборки? - PullRequest
1 голос
/ 15 марта 2020

В моем build.gradle.kts я делаю замену текста при распаковке архива. Я использую filesMatching для выполнения замены.

Моя проблема заключается в том, что когда я заменяю "Your Momma" в исходном тексте сценария на что-то другое и повторно запускаю задачу, Gradle по-прежнему сообщает о ее актуальности вместо того, чтобы очистить распакованный каталог и повторить операцию замены.

> Task :downloadZipFile
Download https://github.com/michel-kraemer/gradle-download-task/archive/1.0.zip

> Task :downloadAndUnzipFile UP-TO-DATE

My build.gradle.kts равно

import de.undercouch.gradle.tasks.download.Download

group = "org.example"
version = "1.0-SNAPSHOT"

plugins {
    id("de.undercouch.download").version("4.0.4")
}

tasks {
    val downloadZipFile by registering(Download::class) {
        src("https://github.com/michel-kraemer/gradle-download-task/archive/1.0.zip")
        dest(File(buildDir, "1.0.zip"))
    }

    val downloadAndUnzipFile by registering(Copy::class) {
        dependsOn(downloadZipFile)
        from(zipTree(downloadZipFile.get().dest))
        into(buildDir)

        val replacement = "Your Momma"
        val spec = project.copySpec {
            this.filter { _: String -> replacement }
        }

        filesMatching("**/*.txt") {
            with(spec)
        }
    }
}

Я также попытался использовать свойство проекта в качестве источника замены текст и изменение его значения также не делает кэш недействительным.

        val replacement = project.findProperty("replacement") as String
...