我有一个Gradle任务,用于创建目录的zip归档文件。 该Gradle任务如下:
task archiveReports(type: Zip) {
from '/projects/Reports/*'
archiveName 'Reports.zip'
}
当我运行命令“gradle archiveReports”时,它显示构建成功。但是,并没有创建任何zip文件。这里我有什么遗漏吗?
我有一个Gradle任务,用于创建目录的zip归档文件。 该Gradle任务如下:
task archiveReports(type: Zip) {
from '/projects/Reports/*'
archiveName 'Reports.zip'
}
当我运行命令“gradle archiveReports”时,它显示构建成功。但是,并没有创建任何zip文件。我想出了一个方法: 现在它对我起作用了。
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 Lambda 压缩包,请参考以下步骤:
tasks {
val zipTask by register("createZip", Zip::class) {
from(processResources)
from(compileKotlin)
archiveFileName.set("app.zip")
into("lib") {
from(configurations.runtimeClasspath)
}
}
build {
dependsOn(zipTask)
}
}
from fileTree(dir: 'Reports')
,这将允许您指定排除模式,例如excludes: ['**/dir/*', '**/R$*']
。from fileTree(dir: 'Reports', excludes: ['**/dir/*', '**/R$*'])
。参见https://docs.gradle.org/current/userguide/working_with_files.html#sec:file_trees。 - Thor_Buxinclude "**/*"
就可以了。谢谢。 - Ashok M A