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

Android Studio: exclude gradle task from build

我写了一个小任务,它从网络更新一个 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,但它似乎不适用于复制任务。

更深入地阅读 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 才能正常工作。