gradle distZip重命名存档

gradle distZip重命名存档,gradle,build.gradle,Gradle,Build.gradle,我想对由distZip任务创建的可分发zip归档文件使用特定名称。我使用了下面的代码 distZip { archiveName baseName+'-'+version+'-bin.zip' } 生成的存档文件中包含“baseName+'-'+版本+'-bin”文件夹 jar -tvf baseName-version-bin.zip 0 Mon Feb 24 15:48:02 CST 2014 baseName-version-bin/ 81

我想对由distZip任务创建的可分发zip归档文件使用特定名称。我使用了下面的代码

distZip {
        archiveName baseName+'-'+version+'-bin.zip'
}
生成的存档文件中包含“baseName+'-'+版本+'-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 jar-tvf baseName-version-bin.zip 0 Mon Feb 24 15:48:02 CST 2014 baseName版本箱/ 81462 Mon Feb 24 15:48:02 CST 2014 baseName版本bin/baseName-version.jar 0 Mon Feb 24 15:48:02 CST 2014 baseName版本bin/lib/ 6329376 Fri Feb 07 09:37:28 CST 2014 baseName版本bin/lib/a.jar 6329376 Fri Feb 07 09:37:28 CST 2014 baseName版本bin/lib/b.jar 所有jar都放在这个目录中。我只想重命名归档文件,而不想干扰其中的内容。我希望在zip中没有'-bin'后缀的'baseName version'目录


如何单独更改归档文件的名称?

我通过配置
doLast
重命名构建的归档文件使其工作

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

您可以按如下方式进行操作:

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

distributions {
    main {
        contents {
            eachFile {
                it.path = it.path.replace('-bin', '')
            }
        }
    }
}
另一件事是,为了添加像-bin这样的后缀,更好的方法(和maven兼容)是使用分类器属性。我使用的是java库分发插件,但我相信使用分发插件时,它的工作原理应该是一样的(考虑到您也在使用maven插件)。那就足够了,你可以这样做:

distZip {
    classifier = 'bin'
}

distributions {
    main {
        baseName = archivesBaseName
        contents {
            eachFile {
                it.path = it.path.replace("-$distZip.classifier", '')
            }
        }
    }
}
使用
应用程序
插件时,更改文件名的方式如下:

distributions {
    main {
        baseName = "watch"
        version = ""
        contents {
            from('.') {
                include '*.yml'
                into "bin"
            }
        }
    }
}
这将生成文件
watch.tar
watch.zip

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