gpt4 book ai didi

android - 导入到另一个项目的 Gradle 模块中的 `rootProject`

转载 作者:行者123 更新时间:2023-12-03 05:14:22 25 4
gpt4 key购买 nike

在我当前的设置中,我有 两个顶级 Gradle 项目 :

图书馆项目VideoPresenter带模块

  • videopresenter-common
  • videopresenter-exoplayer
  • videopresenter-visualon

  • 其中 videopresenter-exoplayervideopresenter-visualon取决于 videopresenter-common .

    所有三个模块都依赖于 OkHttp,所以我在顶层 build.gradle 中定义了一个版本变量:
    ext {
    okhttp = 'com.squareup.okhttp3:okhttp:3.0.0-RC1'
    }

    我在其他三个 build.gradle 中使用年代:
    dependencies {
    compile rootProject.ext.okhttp
    }

    到目前为止,这完全类似于方式,例如, RxBinding已设置。只要我从这个项目中编译模块,它似乎就可以工作。

    然而 ,我还有一个应用程序项目,它使用了这些模块中的一个或多个。假设 settings.gradle该项目包括以下内容:
    include ':videopresenter-common'
    include ':videopresenter-exoplayer'
    project(':videopresenter-common').projectDir = new File('../VideoPresenterAndroid/videopresenter-common')
    project(':videopresenter-exoplayer').projectDir = new File('../VideoPresenterAndroid/videopresenter-exoplayer')

    现在,当我尝试编译应用程序项目时,Gradle 提示,因为它

    Cannot get property 'okhttp' on extra properties extension as it does not exist



    大概是因为 rootProject现在指向顶层 build.gradle我的应用项目。

    如果我在那里添加属性,项目就会编译。但是, 我不想将主项目中的正确版本号“注入(inject)”到库项目中。有没有办法在库项目中集中声明属性,以便在将模块导入另一个项目时也适用?

    最佳答案

    如果目标是从库中获取值(value),那么您可以获取库项目的 rootProject然后引用 ext就像之前一样。明确我们正在寻找的项目应该提供预期的结果。

    dependencies {
    compile project(':videopresenter-common').rootProject.ext.okhttp
    }

    只要项目在 settings.gradle您应该能够引用它的扩展名。

    关于android - 导入到另一个项目的 Gradle 模块中的 `rootProject`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35794921/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com