Gradle - 如何在没有父目录的情况下创建distZip?

Kri*_*raj 7 gradle

Gradle的distZip任务创建一个具有以下结构的zip

MyApp.zip
`-- MyApp
    |-- bin
    |   |-- ...
    `-- lib
        |-- ...
Run Code Online (Sandbox Code Playgroud)

如何跳过父目录,只需压缩下面的文件

MyApp.zip
|-- bin
|   |-- ...
`-- lib
    |-- ...
Run Code Online (Sandbox Code Playgroud)

Sta*_*lav 8

默认情况下这是不可能的,但是可以传输所有文件,这些文件将包含在最终的zip中,并在此zip文件中修改它的目标路径,如下所示:

distZip {
    eachFile { file ->
        String path = file.relativePath
        file.setPath(path.substring(path.indexOf("/")+1,path.length()))
    }
}
Run Code Online (Sandbox Code Playgroud)

这是distZip添加的附加任务配置,它修改最终zip-archive中每个文件的目标路径,从中删除根文件夹.在您的情况下,它将MyApp从zip中删除该文件夹.


Tom*_*s F 5

在分发块中,您可以定义文件应存放在存档中的位置。(来自 Kotlin DSL 的示例)

distributions {
   main {
      contents {
          into("/")
      }
   }  
}
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,并且比接受的答案干净得多。 (2认同)