如何在.java文件中使用build.gradle中定义的变量

Ank*_*ham 3 java intellij-idea gradle build.gradle

我有一个变量,例如 myVar,在 build.gradle 中定义。我想在某个 .java 文件中访问此变量,该文件是同一项目的一部分。我知道我们可以在 android 中使用buildTypesblock 来做到这一点。但我在IntelliJ IDEA中有一个非android项目,所以无法使用它。我确实遇到了一个插件https://github.com/mfuerstenau/gradle-buildconfig-plugin它可以让我做到这一点。但我不想依赖第三方插件。我还了解了如何通过将值设置为系统属性然后使用 .java 在 .java 中访问它来实现此目的System.getenv()。但是,我不想改变系统级的东西。知道如何做到这一点吗?

JB *_*zet 5

将此变量值存储到由 复制的某个属性文件(例如)中processResources,并使用 ClassLoader 从 Java 代码加载属性文件。

例如:

在 中src/main/resources/foo.properties,添加以下行:

zimboom=${blabla}
Run Code Online (Sandbox Code Playgroud)

在您的构建文件中,添加以下配置:

def myVar = 'hello';

processResources {
  fileMatching('foo.properties') {
    expand([blabla: myVar])
  }
}
Run Code Online (Sandbox Code Playgroud)

在 Java 源文件中,要获取值,请使用

Properties properties = new Properties();
properties.load(MyClass.class.getResourceAsStream("/foo.properties");
String zimboom = properties.getProperty("zimboom");
Run Code Online (Sandbox Code Playgroud)

  • gradle 是一个构建工具。您可以使用它将一堆源文件转换为可运行的 jar 文件。完成后,运行 jar 文件。这已经与gradle无关了。jar 文件应该可以在任何机器上运行,无论是否安装了 gradle。因此,为了使 gradle 构建中定义的变量可以在应用程序中使用,该变量的值需要以某种方式存储在应用程序的 jar 文件中。使用属性文件是最简单的方法。 (2认同)