具有lazy include属性的Gradle zip任务包含自身
嗨,我完成了这个zip任务,效果非常好:具有lazy include属性的Gradle zip任务包含自身,gradle,libgdx,Gradle,Libgdx,嗨,我完成了这个zip任务,效果非常好: def dir = new File("${projectDir.parentFile}/test/") task testZip(type: Zip) { from dir destinationDirectory = dir include 'toast/**' archiveFileName = 'test.zip' } 但是当我把include属性设置为懒惰时,因为我需要在我的实际情况中这样做 def dir
def dir = new File("${projectDir.parentFile}/test/")
task testZip(type: Zip) {
from dir
destinationDirectory = dir
include 'toast/**'
archiveFileName = 'test.zip'
}
但是当我把include属性设置为懒惰时,因为我需要在我的实际情况中这样做
def dir = new File("${projectDir.parentFile}/test/")
task testZip(type: Zip) {
from dir
destinationDirectory = dir
include {
'toast/**'
}
archiveFileName = 'test.zip'
}
然后,它创建一个包含文件夹中所有内容的zip,因此生成的归档文件也是如此。在这个测试用例中,内部zip被破坏了,它不会无限地运行,但在现实世界中,它确实会生成一个无限的zip。不知道为什么,也许我最好的案例文件太少或太小。无论测试用例以哪种方式显示问题,生成的zip都包含一个zip,即使它应该只包含toast目录及其所有内容
我该如何解决这个问题?我需要一个惰性包含,因为我要包含的目录是由其他任务计算的。我得到完全相同的问题与焦油除了它拒绝创建档案,因为它包括自己
使用exclude“*.zip”是一个愚蠢的解决方法,它会使归档文件包含我不想要的其他文件夹。我只想包括一个特定的文件夹,lazyly
下面是真实世界中怪物的样子。我基本上需要从Java检索项目的版本,然后使用该版本命名我正在打包的文件夹。制作一个libGDX游戏并使用jre打包。有问题的任务是“makeArchive”+平台
我该如何解决这个问题?我需要一个惰性包含,因为我要包含的目录是由其他任务计算的。我得到完全相同的问题与焦油除了它拒绝创建档案,因为它包括自己
您可以通过使用doFirst方法并使用传递的操作修改tasks属性来获得所需的内容
task('makeArchive_' + platform, type: Zip) {
if(platform.contains("win"))
dependsOn setWindowsIcons
dependsOn fetchVersion
dependsOn 'packr_' + platform
from packrDir
destinationDirectory = packrDir
archiveFileName = provider {
platformRawName.replace("%%VERSION%%", jumpaiVersion) + ".zip"
}
doFirst {
def includeDir = platformRawName.replace("%%VERSION%%", jumpaiVersion)
// Include only files and directories from 'includeDir'
include {
it.relativePath.segments[ 0 ].equalsIgnoreCase(includeDir)
}
}
}
请也看看这个类似的问题。我的解决方案只是一个变通办法。若您在配置阶段了解自己的版本,那个么您可以更轻松地实现您想要的。编写自己的自定义任务或插件也有助于清理构建脚本。非常感谢!
task('makeArchive_' + platform, type: Zip) {
if(platform.contains("win"))
dependsOn setWindowsIcons
dependsOn fetchVersion
dependsOn 'packr_' + platform
from packrDir
destinationDirectory = packrDir
archiveFileName = provider {
platformRawName.replace("%%VERSION%%", jumpaiVersion) + ".zip"
}
doFirst {
def includeDir = platformRawName.replace("%%VERSION%%", jumpaiVersion)
// Include only files and directories from 'includeDir'
include {
it.relativePath.segments[ 0 ].equalsIgnoreCase(includeDir)
}
}
}