gradle distZip重命名存档

时间:2014-02-24 21:54:02

标签: gradle build.gradle

我想对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中的'baseName-version'目录没有'-bin'后缀。

如何单独更改存档名称?

3 个答案:

答案 0 :(得分:7)

您可以按照以下方式执行此操作:

distZip {
    archiveName "$baseName-$version-bin.zip"
}

distributions {
    main {
        contents {
            eachFile {
                it.path = it.path.replace('-bin', '')
            }
        }
    }
}

另一件事是,为了更好地添加诸如 -bin 这样的后缀(并且与maven兼容)将使用 classifier 属性。我正在使用 java-library-distribution 插件,但我相信使用发布插件它应该工作相同(考虑到你也使用maven插件)。那就足够你了:

distZip {
    classifier = 'bin'
}

distributions {
    main {
        baseName = archivesBaseName
        contents {
            eachFile {
                it.path = it.path.replace("-$distZip.classifier", '')
            }
        }
    }
}

答案 1 :(得分:2)

我通过配置doLast重命名构建的存档来实现它。

distZip {
        doLast {
            file("$destinationDir/$archiveName").renameTo("$destinationDir/"+baseName+'-'+version+'-bin.zip')
        }
    }

答案 2 :(得分:1)

apply plugin: 'application'

使用'application'插件时,这是更改文件名的方式。

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

此生成的文件“watch.tar”& 'watch.zip'