java - 如何从 java 模块中的 gradle.properties 中读取值?

标签 java android gradle android-gradle-plugin gradle-plugin

我在 Android Studio 中有一个包含几个模块的项目。

  • app 模块。使用 apply plugin: 'com.android.application'
  • androidLibrary 模块。使用 apply plugin: 'com.android.library'
  • javaLibrary 模块。使用 apply plugin: 'java'

我想在项目 gradle.properties 文件中声明一些变量,并能够从 javaLibrary 模块中读取它们。

我已经根据this通过以下方式声明了属性文档...

  • mysuperhost=superhost
  • systemProp.mysuperhost=superhost
  • ORG_GRADLE_PROJECT_mysuperhost=superhost
  • org.gradle.project.mysuperhost=superhost

...并尝试以这种方式阅读它们但没有成功:

  • System.getenv("mysuperhost");
  • System.getProperty("mysuperhost");

我知道如何从 BuildConfig 类中读取属性,但这是应用程序模块中生成的类(使用 apply plugin: 'com.android.application' ),所以这不适用于这种特殊情况。

最佳答案

如果您的 gradle.properties 文件中有一些值,例如 mysuperhost= super 主机 然后在您的 build.gradle 文件中写入以下行(从 gradle.properties 文件中获取属性并将其添加到 BuildConfig.java 类中):

// ...
// ...

android {
    // Just for example
    compileSdkVersion 23
    // Just for example
    buildToolsVersion "23.0.2"

    // ...
    // ...

    defaultConfig {
        // Just for example
        minSdkVersion 14
        // Just for example
        targetSdkVersion 23

        // This is the main idea
        buildConfigField('String', 'MY_SUPER_HOST', "\"${mysuperhost}\"")

        // ...
        // ...
    }

    // ...
    // ...
}

// ...
// ...

之后构建您的项目,您可以通过 BuildConfig.MY_SUPER_HOST 使用您的值

关于java - 如何从 java 模块中的 gradle.properties 中读取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470941/

相关文章:

java - Gson 不能反序列化继承的类?

java - Oracle 数据库连接极度缓慢

android - 如何从另一个 Activity 或底部工作表对话框/fragment 中关闭一个 Activity

android - 我的项目没有获取库模块 jar 文件夹中定义的类文件

java - 从 ByteBuffer 中提取 <CRLF>-字符串 - 我很困惑

java - 将 CookieStore 转换为字符串 : pb with encode/decode value

android - Appium 无法在 UBUNTU 中运行

android - Recyclerview 快速滚动项目消失

android - 升级到 gradle 3.3 和 android 构建工具 2.3.0 时收到构建错误

android - 有什么方法可以从顶级项目 gradle 中删除 "classpath ' com.google.gms :google-services:4. 2.0' 依赖项