java - 如何在 Gradle Java 库项目构建脚本中指定 buildConfigField

标签 java gradle annotation-processor

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

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

并像这样在我的 Android 应用程序中访问它们:-

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

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

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

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

如果这是可能的,那么我该如何实现呢?

最佳答案

您可以使用 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 并希望生成 Kotlin 版本 BuildConfig,请查看 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 并使用这些值。

关于java - 如何在 Gradle Java 库项目构建脚本中指定 buildConfigField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46805846/

相关文章:

java - 相当于Basic的模块

shell - 运行Shell脚本的Gradle exec任务分散了输入的注意力

java - 编译测试库不编译接口(interface)的静态方法(Java 8)

java - 如何让 Eclipse 忽略测试源目录

java - 如何序列化/反序列化 arrayList(Object)

java - 如何配置调试版本以指向不同的 api?

java - 异常是 : org. gradle.api.tasks.TaskExecutionException:任务执行失败:app:compileDebugJavaWithJavac

android - 使用 gradle 包含 butterknife 时重复文件

Java注解处理如何检查VariableElement是原始类型(int,float)还是某个类的对象

android - AssistedInject for Dagger 2 如何工作?