Gradle: как извлечь файлы tar, созданные задачами других модулей (выбрасывая «Не удалось создать MD5 ha sh для файла»)? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть большой многомодульный проект Gradle, где у каждого модуля есть идентичная задача, которая создает сжатый tar-файл (.tgz). Не все такие подмодули задач создадут файл tar. В другом подмодуле (родственник этих модулей, производящих файл tar) мне нужно извлечь все файлы tar в общий каталог. Моя задача Копировать в настоящее время вызывает исключение:

...
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.io.UncheckedIOException: Failed to create MD5 hash for file 'C:\PATH\TO\my-file.tgz' as it does not exist.
...
...
Caused by: java.io.FileNotFoundException: C:\PATH\TO\my-file.tgz (The system cannot find the path specified)
at org.gradle.internal.hash.DefaultFileHasher.hash(DefaultFileHasher.java:36)
...

Моя задача выглядит следующим образом:

task stageAllTgz(type: Copy) {

    File stagingDir = Path.of(project.buildDir.toString(), "staging").toFile()
    doFirst {
        stagingDir.mkdirs()
    }
    into stagingDir
    setIncludeEmptyDirs(false)

    List<Task> allSiblingTasks = rootProject.getSubprojects().stream()
        .map({ return it.tasks.findByName("myTaskProducingTgz") })
        .collect(Collectors.toList())

    dependsOn allSiblingTasks 
    allSiblingTasks.forEach({
        from(tarTree(resources.gzip(it.outputs.getFiles().getSingleFile())))
    })
}

Как извлечь файлы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...