Задача Gradle Copy для каждого файла, если предложение работает некорректно, что я делаю неправильно? - PullRequest
0 голосов
/ 11 июля 2019

Это моя задача

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, кроме случаев, когда уже существует файл с таким именем, если только это не снимок.

Но когда присутствуют все файлы, моментальные снимки не перезаписываются, а должны.

Что противоречиво, так это то, что когда по крайней мере 1 файл отсутствует (не имеет значения, снимок это или нет), тогда внезапно все снимки перезаписываются, но не снимки.

Таким образом, если хотя бы один файл отсутствует, скрипт работает как задумано, но когда присутствуют все файлы, он просто игнорирует половину выражения предложения if.

Это похоже на короткое замыкание выражения "exist ()" для всего набора файлов.

Использование gradlew, которое указывает на gradle-5.0-bin.zip

1 Ответ

0 голосов
/ 11 июля 2019

Похоже, это связано с этим: выпуск gradle 4663

Задача копирования имеет концепцию входов и выходов, и когда ни входы, ни выходы не изменились с момента последнего запуска (тот же список зависимостей, тот же список скопированных файлов в целевом каталоге) Задание копирования считается актуальным для *. 1005 *

Найденная альтернатива:

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.Также пришлось переместить задачу ниже списка зависимостей, так как это приводило к ошибкам конфигурации, которые я пока не понимаю.

...