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

2022-09-01 00:50:32

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

dependencies {
  compile project('../../stdlib/dagger')
}

所以我的三重奏是这样的:

我有一个安卓应用程序。结构如下所示:

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

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

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

我想要的是将匕首,utils,http模块编译成MyApp项目。

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

那么,是否有可能以某种方式链接其他毕业项目呢?我正在寻找一个暂时的解决方案。一旦源代码稳定,我将把std库推送到maven存储库中。

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

  • MyApp(路径为 /Users/foo/workspace/MyApp)
    • app(路径为 /Users/foo/workspace/MyApp/app)
    • libraries (symlink to /Users/foo/workspace/stdlib)
 dependencies {
      compile project(':libraries:dagger')
    }

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


答案 1

您可以使用主项目中的“settings.gradle”文件包含外部根项目模块。它也必须是一个 gradle 项目,在特定的 Android 构建情况下,您必须将每个模块配置为“android-library”插件项目。

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

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

您的'MyApp'build.gradle必须以相对路径Gradle方式反映'dagger'模块的需求:

dependencies {
  compile project(':dagger')
}

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


答案 2

推荐