Java 在构建时从Gradle设置静态变量

Java 在构建时从Gradle设置静态变量,java,android,git,android-studio,gradle,Java,Android,Git,Android Studio,Gradle,我有一个Android项目,由git管理。 Git有两个分支(远不止这两个分支),分支a和分支b。 是否可以设置gradle以确定项目是从哪个分支生成的,并根据分支将项目的某个类中的公共静态字符串设置为值 谢谢 是的,您可以通过在项目中添加风味来实现这一点 e、 g 现在可以这样访问这个值 e、 g 如果有任何问题,请告诉我是的,您的两个分支中可能都有一个gradle.properties文件(您可以阅读有关属性的内容),其中包含一些属性,例如buildBranchName。但分配给该属性的值在

我有一个Android项目,由git管理。 Git有两个分支(远不止这两个分支),分支a和分支b。 是否可以设置gradle以确定项目是从哪个分支生成的,并根据分支将项目的某个类中的
公共静态字符串设置为值


谢谢

是的,您可以通过在项目中添加风味来实现这一点

e、 g

现在可以这样访问这个值

e、 g


如果有任何问题,请告诉我

是的,您的两个分支中可能都有一个
gradle.properties
文件(您可以阅读有关属性的内容),其中包含一些属性,例如
buildBranchName
。但分配给该属性的值在每个分支中都不同。例如,在brach1中,与build.gradle脚本位于同一目录中的gradle.properties文件具有

buildBranchName=branch1
里面的财产。同时,branch2中的gradle.properties文件包含:

buildBranchName=branch2
然后,因为您有一个android项目,所以可以使用
BuildConfig
类生成选项将此变量传递到应用程序源中。您可以在“增强BuildConfig”一节中了解它。您只需为生成类型的自动生成类添加一些属性,如下所示:

android {
    ...
    buildTypes {
        debug {
            buildConfigField "String", "BUILD_BRANCH", buildBranchName
        }
        ...
    }    
}
然后,在构建过程中,将生成最后一个类
BuildConfig
,它将有一个
build\u分支
字段,您可以将该字段用作该类的一个简单静态字段


此外,如果有些人有一个非android项目,则有一个,它允许对所有java项目执行相同的操作。

Stanislav,小编辑:我可以在build.gradle中获得git branch,如下所示:,这似乎是一个更好的解决方案。我不知道buildConfigField,它完成了这项工作。谢谢大家!@MikhailKrutov是的,您可以通过exec类型的任务来完成,但在我看来,有时候这不是最好的解决方案,因为它依赖于远程进程的命令行调用,并且不提供固定的分支名称列表。但是是的,它主要依赖于需求。举个例子,我有一些类似的东西,但是有大量的分支用于不同的版本和客户。在properties中,我们有一个客户名称,这与许多分支相同,名称存储为固定名称,不依赖分支名称
buildBranchName=branch2
android {
    ...
    buildTypes {
        debug {
            buildConfigField "String", "BUILD_BRANCH", buildBranchName
        }
        ...
    }    
}