将变量设置为Gadle构建文件

时间:2015-06-12 06:17:14

标签: gradle

这是对this的一个后续问题。

我想“知道”在执行Gradle build.gradle文件期间可以从哪个分支构建Android应用程序,并将分支名称添加到我的应用程序的versionName

这是我天真的做法:

apply plugin: 'android'

def branch ="test";

android {
    compileSdkVersion 22
    buildToolsVersion '22.0.0'

    // ..

    buildTypes {

        debug {
            minifyEnabled false;
            applicationIdSuffix ".debug"
            versionNameSuffix " branch: " + "$branch"
            debuggable true
            signingConfig signingConfigs.debug
        }

    }

}

task setArgs << {

   branch =  "$word1"

}

task showArgs << {
    println "$branch"
}

执行时:

gradlew setArgs -Pword1=mybranch showArgs

设置分支变量,并在执行showArgs时在控制台中记录“mybranch”。

但是当我执行

gradlew setArgs -Pword1=mybranch build

分支变量仍然是默认的字符串“test”,因此在versionNameSuffix中无用。

让这项工作最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

那是因为行

versionNameSuffix " branch: " + "$branch"

在配置阶段执行,此时配置了所有任务。

然后,当这个阶段完成并且gradle知道所有任务及其依赖关系时,执行setArgs,并执行以下行:

branch =  "$word1"

您可以简单地删除setArgs任务并执行

versionNameSuffix " branch: $word1"

或者,如果您希望分支的默认值为&#34; test&#34;当没有传递属性word1时:

versionNameSuffix(' branch: ' + (project.hasProperty('word1') ? project.property('word1') : 'test'))

答案 1 :(得分:0)

我认为更好的方法是使用gradle.properties文件来存储分支名称 - 这样,无论何时调用Gradle,都不必提供它。

<强>的build.gradle:

apply plugin: 'android'

android {
    compileSdkVersion 22
    buildToolsVersion '22.0.0'

    // ..
    buildTypes {
        debug {
            minifyEnabled false;
            applicationIdSuffix ".debug"
            versionNameSuffix " branch: " + "$branch"
            debuggable true
            signingConfig signingConfigs.debug
        }
    }
}

<强> gradle.properties

branch=mybranch