我的项目有一个远程依赖项,它实际上只是某些文件的zip,需要在某处解压缩,以便构建可以从文件生成新的java源代码.(我说的一般是关注核心问题而不是具体细节)
我不希望这会如此困难,但我一直无法让它发挥作用.这是我创造的:
我定义了一个新配置:
configurations {
newConf
}
Run Code Online (Sandbox Code Playgroud)
后来,我为这种混淆定义了一个依赖.它解析为我需要爆炸的zip文件:
dependencies {
newConf "group:name:version@zip"
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这些气味对我来说都是正确的,但如果有人不同意,我正在听.
最后,我需要定义一个将zip分解为目录的任务,然后该目录将成为以后代码生成命令的输入.
task explodeModel {
description = "unzip model into the specified 'modelSrc' directory"
//input is a "files" collection (usually just one: the zip)
//output is the specified modelSrc dir
File modelSrc = new File("$buildDir/modelSrc")
outputs.files modelSrc
doLast {
configurations.newConf.allArtifacts.each { artifact -> println artifact }
}
}
Run Code Online (Sandbox Code Playgroud)
显然doLast还没有解压缩任何东西,我只是试图获得zipfile本身的绝对路径,那就是我被卡住的地方.我不知道如何获取文件的路径,以便我可以解压缩它.有帮助吗?
非常感谢
rod*_*ion 12
尝试这些方面的东西,它应该工作:
task explodeModel(type: Copy){
configurations.newConf.filter { it.toString().endsWith(".zip") }.each{
from zipTree(it)
}
into 'output/dir'
}
Run Code Online (Sandbox Code Playgroud)
当然,.zip如果您确定配置中的工件是拉链,则可以省略过滤部分.
我在一个插件中做了类似的事情.这应该适合你:
configurations.newConf.singleFile
Run Code Online (Sandbox Code Playgroud)
假设只有一个文件.返回类型是java.io.File.有关更多信息,请查看此课程GaePlugin.groovy.相关的方法是configureDownloadSdk.解压缩的任务是GaeDownloadSdkTask.groovy.
| 归档时间: |
|
| 查看次数: |
11204 次 |
| 最近记录: |