我有两个gradle任务:
### 2
t1 = "".join(t1.split())
t2 = "".join(t2.split())
我在分发文件夹中有两个zip文件,我通过执行一个任务获得。 理想情况下,作为这些任务的结果,我应该获得解压缩的文件,但我没有得到任何输出。有什么建议? 分发文件夹中这些文件的名称是bc-bluetooth-0.8.0-dist.zip和bc-core-0.6.3-dist.zip
答案 0 :(得分:0)
假设~/tmp/distribution
中有zip文件,以下内容适用于Gradle 2.12:
def distributionZips = []
def performDistribution = { ->
// copy zip files from ~/tmp/distribution to ~/build/tmp/distribution
ant.mkdir(dir: "${buildDir}/tmp/distribution")
ant.copy(todir: "${buildDir}/tmp/distribution") {
fileset(dir: "${projectDir}/tmp/distribution", includes: "*.zip")
}
// populate distributionZips
fileTree(dir: "${buildDir}/tmp/distribution", include: '*.zip').visit { FileVisitDetails details ->
distributionZips << details.file.name
println 'printvalues: ' + distributionZips
}
}
task getDistributionValues() << {
performDistribution()
}
def distributionComponentName
tasks.whenTaskAdded { task ->
if (task.name == "unzipDistribution") {
performDistribution()
}
}
task unzipDistribution(type:Copy) {
distributionZips.each { unzipNames ->
distributionComponentName = unzipNames.replace(".zip", "")
println('comp Name here'+distributionComponentName)
def zipFile = file('build/tmp/distribution/'+unzipNames)
into project.buildDir
from(zipTree(zipFile)) {
into 'tmp/unzipComponent/'+distributionComponentName
}
}
}
主要问题是:
task unzipDistribution(type: Copy) {
// executed during Configuration phase
}
涉及配置阶段和执行阶段的混合代码。 (我使用ICE规则:初始化,配置,执行,为documented here)。
我的解决方案只是一种方法,但它使用了一个Groovy方法,在执行阶段由getDistributionValues
使用,在配置阶段也由unzipDistribution
使用。