gpt4 book ai didi

groovy - 如何使用Gradle在没有第一个目录的情况下提取?

转载 作者:行者123 更新时间:2023-12-04 08:52:17 26 4
gpt4 key购买 nike

我正在尝试提取一个没有 PARENT 目录的依赖 zip 文件,在使用 Gradle 提取时排除一些文件。

这是我所拥有的,这有效,但感觉不对,我希望有更好的方法来做到这一点

我正在提取的 Zip 文件

jar tf parent-folder-name.zip


parent-folder-name/bin/something.sh
parent-folder-name/bin/something.bat
parent-folder-name/lib/somelib.jar

选项 1
task explodeToDist1(type: Copy) {
from zipTree(configurations.extractDist.singleFile)
exclude "**/lib/**"
eachFile {
def newPath = it.relativePath.segments[1..-1].join("/")
it.relativePath = RelativePath.parse(true, newPath)
}
into 'build/dist'
doLast {
def path = buildDir.getPath() + "/dist/parent-folder-name"
def dirToDelete = new File(path)
dirToDelete.deleteOnExit()
}
}

选项 2
task explodeToDist2 << {
def unzipDir = new File('build/unzipTmp')
copy {
from zipTree(configurations.extractDist.singleFile)
into unzipDir
}
def rootZipDir = unzipDir.listFiles()[0]
fileTree(rootZipDir){
exclude "**/lib/**"
}.copy {
into 'src/dist'
}
unzipDir.deleteDir()
}

给我 选项 2 感觉好多了,但我不确定在 Gradle 中是否有更好的方法来做到这一点?

最佳答案

似乎您的用例尚未在 gradle 中以非常用户友好的方式得到支持。列出了相关的功能请求 here .

还有这个similar stackoverflow question其中有一些建议看起来比您已有的选项更容易。

由于 gradle 与 ant 集成良好,并且 ant 解压缩任务确实支持扁平化,因此您也可以依赖它。

有关更多详细信息,请参阅:

  • Using ant from gradle
  • Ant unzip task
  • flatten mapper
  • 关于groovy - 如何使用Gradle在没有第一个目录的情况下提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22844296/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com