【问题标题】:Gradle task to create a zip archive of a directoryGradle 任务以创建目录的 zip 存档
【发布时间】:2016-08-20 04:40:33
【问题描述】:

我有一个 gradle 任务来创建目录的 zip 存档。 gradle 任务是:

task archiveReports(type: Zip) {
   from '/projects/Reports/*'
   archiveName 'Reports.zip'
}

当我运行“gradle archiveReports”命令时,它显示构建成功。但是,没有创建 zip 文件。

我错过了什么吗?

【问题讨论】:

    标签: gradle zip build.gradle archive


    【解决方案1】:

    我想出了一个办法: 它现在对我有用。

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

    【讨论】:

    • 不能只有一个包含'**/'吗?
    • 您也可以使用from fileTree(dir: 'Reports'),如果需要,您可以指定排除模式,例如excludes: ['**/dir/*', '**/R$*']from fileTree(dir: 'Reports', excludes: ['**/dir/*', '**/R$*'])docs.gradle.org/current/userguide/…
    • @JaroslavZáruba 你是对的。单独使用include "**/*" 是可能的。谢谢。
    【解决方案2】:

    使用 Gradle 6.7

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

    注意:archiveName 已被弃用。

    【讨论】:

      【解决方案3】:

      使用 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")
      }
      

      取自official docs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-31
        • 2010-12-23
        • 2015-12-01
        • 1970-01-01
        • 2012-07-25
        相关资源
        最近更新 更多