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

标签 java gradle intellij-idea build.gradle

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

最佳答案

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

例如:

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

zimboom=${blabla}

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

def myVar = 'hello';

processResources {
  fileMatching('foo.properties') {
    expand([blabla: myVar])
  }
}

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

Properties properties = new Properties();
properties.load(MyClass.class.getResourceAsStream("/foo.properties");
String zimboom = properties.getProperty("zimboom");

关于java - 如何在.java文件中使用build.gradle中定义的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54006319/

相关文章:

java - Listview 项目布局将线性布局推离屏幕

java - 为什么 java 和 c 中增量运算符的行为不同

java - 我应该如何/应该创建自己的 Guice 范围

android - 尝试在 android studio 中添加库时出现 compileClassPAth 错误

intellij-idea - WebStorm 中的语言注入(inject)(scss 到 html)

scala - 尝试下载 Scala 时无法运行 java

java - 如何将多个不同的 InputStream 链接到一个 InputStream

android - 在我的应用程序中运行不同的 App 类(用于调试)

android - isReleaseBuild() 是 Android Gradle DSL 的一部分吗?

android - 使用 alternativeIdePath 在 Intellij 上创建插件时找不到 Android Studio