Android Studio:从构建中排除gradle任务

时间:2016-02-03 16:07:22

标签: android android-studio gradle task

我写了一个小任务,它从网上更新了一个Android库。这应该只在要求时完成。我知道,有一个'-x'选项,但这似乎只适用于gradle本身。每当我尝试使用Android Studio构建项目时,任务就会执行。有没有办法将特定任务排除在执行之外?

我的gradle任务看起来像:

task downloadSDK {
    print 'Downloading SDK...'

    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())

    ant.get(
            src: 'http://example.com/SDK.zip',
            username:properties.getProperty('USERNAME', null),
            password:properties.getProperty('PASSWORD', null),
            dest:"${buildDir}/sdk.zip",
            verbose:true)

    println 'done'
}

task updateSDK(type: Copy) {
    print 'Copying SDK...'
    delete "src/main/java/"
    def zipFile = file("${buildDir}/sdk.zip")
    def outputDir = file("src/main/java")
    from zipTree(zipFile)
    into outputDir
    println 'done'
}

updateSDK.dependsOn downloadSDK

我认为我只需要将<<添加到我的updateSDK,但它似乎不适用于复制任务。

1 个答案:

答案 0 :(得分:0)

更深入地阅读gradle规范,我发现,Copy实际上不是一项任务,而是一项功能。所以,我的gradle任务必须看起来像:

task updateSDK << {
    print 'Copying SDK...'
    delete "src/main/java/"

    def zipFile = file("${buildDir}/sdk.zip")
    def outputDir = file("src/main/java")
    copy {
        from zipTree(zipFile)
        into outputDir
    }
    println 'done'
}

不同之处在于我在任务中调用复制功能,以便doLast正常工作。