Задача Gradle для создания zip-архива каталога
У меня сложная задача создать zip-архив каталога. Задача Gradle:
task archiveReports(type: Zip) {
from '/projects/Reports/*'
archiveName 'Reports.zip'
}
Когда я запускаю команду 'gradle archiveReports', она показывает, что сборка прошла успешно. Тем не менее, zip-файл не создается.
Я что-то здесь упускаю?
5 ответов
Решение
Я нашел способ для этого: это работает для меня сейчас.
task myZip(type: Zip) {
from 'Reports/'
include '*'
include '*/*' //to include contents of a folder present inside Reports directory
archiveName 'Reports.zip'
destinationDir(file('/dir1/dir2/dir3/'))
}
С Kotlin DSL
tasks.register<Zip>("packageDistribution") {
archiveFileName.set("my-distribution.zip")
destinationDirectory.set(layout.buildDirectory.dir("dist"))
from(layout.buildDirectory.dir("toArchive"))
}
С Groovy
tasks.register('packageDistribution', Zip) {
archiveFileName = "my-distribution.zip"
destinationDirectory = layout.buildDirectory.dir('dist')
from layout.buildDirectory.dir("toArchive")
}
Взято из официальных документов
Добавление к принятому ответу с Gradle 6.7,
task packageDistribution(type: Zip) {
archiveFileName = "my-distribution.zip"
destinationDirectory = file("$buildDir/dist")
from "$buildDir/toArchive"
}
archiveName устарело.
На всякий случай, если кто-нибудь придет сюда, чтобы узнать, как заархивировать ваш проект, например, чтобы использовать его в качестве лямбда-архива AWS, вот вам:
tasks {
val zipTask by register("createZip", Zip::class) {
from(processResources)
from(compileKotlin)
archiveFileName.set("app.zip")
into("lib") {
from(configurations.runtimeClasspath)
}
}
build {
dependsOn(zipTask)
}
}
https://docs.gradle.org/current/userguide/working_with_files.html
task packageDistribution(type: Zip) { archiveFileName = "my-distribution.zip" destinationDirectory = file("$buildDir/dist") from "$buildDir/toArchive" }