如何在Gradle Java-library Project构建脚本中指定buildConfigField

时间:2017-10-18 08:30:00

标签: java gradle annotation-processor

在我的Android项目中,我可以按如下方式指定Gradle常量:

buildConfigField 'Boolean', 'analyticsEnabled', 'false'

并在我的Android应用程序中访问它们,如下所示: -

public boolean isAnalyticsEnabled() {
        return BuildConfig.analyticsEnabled;
}

如何在Java库Gradle构建脚本中获得相同的功能?

更确切地说,我正在开发一个自定义注释处理器作为我的Android应用程序所依赖的纯Java项目(库)。

我想在我的Java Gradle构建文件中定义可由我的注释处理器访问的常量。

如果可以,那我该如何实现呢?

1 个答案:

答案 0 :(得分:0)

您可以使用these plugins之一。例如。 de.fuerstenau.buildconfig

build.gradle

plugins {
    id 'de.fuerstenau.buildconfig' version '1.1.8'
}

buildConfig {
    buildConfigField 'String', 'QUESTION', '"Life, The Universe, and Everything"'
    buildConfigField 'int', 'ANSWER', '42'
}

然后获得一个BuildConfig类,例如:

public final class BuildConfig
{
    private BuildConfig () { /*. no instance */ }

    public static final String VERSION = "unspecified";
    public static final String NAME = "DemoProject";

    public static final String QUESTION = "Life, The Universe, and Everything";
    public static final int ANSWER = 42;
}

如果您使用的是Kotlin,并且想生成BuildConfig的Kotlin版本,请同时查看io.pixeloutlaw.gradle.buildconfigkt

如果不喜欢这个主意,您可以做的是资源过滤:

build.gradle

processResources {
    expand project.properties
}

gradle.properties (这些值与project.questionproject.answer相同):

question=Life, The Universe, and Everything
answer=42

src/main/resources/buildconfig.properties

question=${question}
answer=${answer}

然后只需将buildconfig.properties读入应用程序中的Properties并使用这些值即可。