创建一个目录的zip归档文件的Gradle任务

37

我有一个Gradle任务,用于创建目录的zip归档文件。 该Gradle任务如下:

task archiveReports(type: Zip) {
   from '/projects/Reports/*'
   archiveName 'Reports.zip'
}
当我运行命令“gradle archiveReports”时,它显示构建成功。但是,并没有创建任何zip文件。
这里我有什么遗漏吗?
4个回答

60

我想出了一个方法: 现在它对我起作用了。

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/'))
}

6
能否只使用一条包含路径为'***/*'的语句? - Jaroslav Záruba
3
如果需要,您还可以使用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_Bux
@JaroslavZáruba 你是对的。只用 include "**/*" 就可以了。谢谢。 - Ashok M A

12

使用 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")
}
官方文档中摘取。

11

使用 Gradle 6.7,

task packageDistribution(type: Zip) {
    archiveFileName = "my-distribution.zip"
    destinationDirectory = file("$buildDir/dist")

    from "$buildDir/toArchive"
}

注意:archiveName已弃用。


1

如果有人想知道如何压缩项目,例如将其用作 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)
}

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接