gradle没有激活任务来复制文件

时间:2016-06-20 13:13:46

标签: android gradle android-gradle

我在build.gradle中使用以下代码来复制飞艇的不同配置文件。但是,我发现我的任务copyReleaseConfigFileTask / copyDebugConfigFileTask没有被调用。任何人都可以提示为什么我在下面定义的任务没有被执行?

task copyReleaseConfigFileTask(type: Copy) << {
    println "-> using airship release config"
    from 'app/src/main/assets/airshipconfig.properties.release'
    into 'app/src/main/assets/airshipconfig.properties'
}

task copyDebugConfigFileTask(type: Copy) << {
    println "-> using airship debug config"
    from 'app/src/main/assets/airshipconfig.properties.debug'
    into 'app/src/main/assets/airshipconfig.properties'
}

assembleDebug {
    dependsOn copyDebugConfigFileTask
}

assembleRelease {
    dependsOn copyReleaseConfigFileTask
}

1 个答案:

答案 0 :(得分:0)

首先,您没有正确配置任务。您已尝试在执行阶段进行CopySpecification配置,但必须在配置阶段完成。为此,您必须从任务规范中删除<<。它必须以这种方式重写:

task copyReleaseConfigFileTask(type: Copy) {
    doLast {
         println "-> using airship release config"
    }
    from 'app/src/main/assets/airshipconfig.properties.release'
    into 'app/src/main/assets'
    rename('airshipconfig.properies.release','airshipconfig.properties')
}

task copyDebugConfigFileTask(type: Copy) {
    doLast {
        println "-> using airship debug config"
    }
    from 'app/src/main/assets/airshipconfig.properties.debug'
    into 'app/src/main/assets'
    rename('airshipconfig.properties.debug','airshipconfig.properties')
}

注意,<<doLast闭包相同。因此,这将正确配置您的复制任务,但该消息将仅在执行后显示。

另外,您提供了into值作为文件名的路径,但它必须是目录的路径,而不是文件。要重命名它,请另外使用rename闭包。在官方CopySpec API

中了解相关信息