У меня есть большой многомодульный проект 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())))
})
}
Как извлечь файлы?