代码之家  ›  专栏  ›  技术社区  ›  suman j

gradle distZip重命名存档

  •  12
  • suman j  · 技术社区  · 12 年前

    我希望使用distZip任务创建的可分发zip存档的特定名称。我使用了以下代码

    distZip {
            archiveName baseName+'-'+version+'-bin.zip'
    }
    

    生成的存档文件中包含“baseName+”-“+version+”-bin“文件夹。

        jar -tvf baseName-version-bin.zip 
            0 Mon Feb 24 15:48:02 CST 2014   baseName-version-bin/
         81462 Mon Feb 24 15:48:02 CST 2014  baseName-version-bin/baseName-version.jar
             0 Mon Feb 24 15:48:02 CST 2014  baseName-version-bin/lib/
        6329376 Fri Feb 07 09:37:28 CST 2014 baseName-version-bin/lib/a.jar
        6329376 Fri Feb 07 09:37:28 CST 2014 baseName-version-bin/lib/b.jar
    
    

    所有的罐子都放在这个目录中。我只是想重命名存档文件,不要打扰其中的内容。我希望zip中没有“-bin”后缀的“baseName version”目录。

    如何单独更改存档的名称?

    3 回复  |  直到 12 年前
        1
  •  10
  •   topr    12 年前

    您可以执行以下操作:

    distZip {
        archiveName "$baseName-$version-bin.zip"
    }
    
    distributions {
        main {
            contents {
                eachFile {
                    it.path = it.path.replace('-bin', '')
                }
            }
        }
    }
    

    另一件事是,添加这样的后缀 -垃圾箱 更好的方法(与maven兼容)是使用 分类器 所有物我正在使用 java库分发 插件,但我相信 分配 插件的工作原理应该是一样的(考虑到你也在使用maven插件)。那么你这样做就够了:

    distZip {
        classifier = 'bin'
    }
    
    distributions {
        main {
            baseName = archivesBaseName
            contents {
                eachFile {
                    it.path = it.path.replace("-$distZip.classifier", '')
                }
            }
        }
    }
    
        2
  •  6
  •   Yuri    6 年前

    我通过配置 doLast 以重命名构建的存档。

    distZip {
        doLast {
            file("$destinationDir/$archiveName").renameTo("$destinationDir/$baseName-$version-bin.zip")
        }
    }
    
        3
  •  3
  •   Yuri    6 年前
    apply plugin: 'application'
    

    使用 application 插件,这是如何更改文件名的:

    distributions {
        main {
            baseName = "watch"
            version = ""
            contents {
                from('.') {
                    include '*.yml'
                    into "bin"
                }
            }
        }
    }
    

    此生成的文件 watch.tar & watch.zip .