文件未解压缩,任务输出为UP TO DATE

时间:2016-05-16 12:42:40

标签: gradle groovy

我有两个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

1 个答案:

答案 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使用。