Gradle依赖关系:按相对路径编译项目

是否可以在Gradle(在Android Studio中)中指定对当前项目边界之外的另一个gradle项目的依赖关系?例如,相对路径如下所示:

dependencies {

compile project('../../stdlib/dagger')

}

所以我想的是这样的:

我有一个Android应用程序。结构如下:

  • MyApp(路径为/ Users / foo / workspace / MyApp)

    • 应用程序(路径为/ Users / foo / workspace / MyApp / app)

我有一个gradle android库项目,其中包含3个子模块:

  • stdlib(路径为/ Users / foo / workspace / stdlib)

    • 匕首(路径为/ Users / foo / workspace / stdlib / dagger)
    • utils(路径为/ Users / foo / workspace / stdlib / utils)
    • http(路径为/ Users / foo / workspace / stdlib / http)

我想要的是将Dagger,utils,http模块编译到MyApp项目中。

stdlib库模块正在大量开发中,并将随着MyApp的增长而增长。因此,我不想每次更改时都将它们推送到Maven存储库中。

那么有可能以某种方式链接其他gradle项目吗?我正在寻找临时解决方案。一旦源代码稳定,我将把std库推入maven存储库。

另外,作为解决方法,可以使用sourceSet解决方案。我还考虑过在MyApp中创建一个库文件夹,该文件夹是与stdlib的符号链接,但是我没有按预期运行它:

  • MyApp(路径为/ Users / foo / workspace / MyApp)

    • 应用程序(路径为/ Users / foo / workspace / MyApp / app)
    • 库(符号链接到/ Users / foo / workspace / stdlib)

 dependencies {

compile project(':libraries:dagger')

}

任何想法如何解决gradle中的这种依赖性?

回答:

您可以使用主项目中的“

settings.gradle”文件包含外部根项目模块。它也必须是gradle项目,在特定的Android构建环境中,您必须将每个模块配置为“

android-library”插件项目。

例如,在“ MyApp”项目settings.gradle中,您可以尝试以下操作:

include 'app'

include 'dagger'

project(':dagger').projectDir = new File('/Users/foo/workspace/stdlib/dagger')

您的“ MyApp” build.gradle必须以相对路径Gradle方式反映“匕首”模块的需求:

dependencies {

compile project(':dagger')

}

就是这样。对您需要的每个外部模块重复此步骤,您将拥有正确的Gradle多项目配置。

以上是 Gradle依赖关系:按相对路径编译项目 的全部内容, 来源链接: utcz.com/qa/423805.html

回到顶部