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

时间:2014-07-26 21:35:33

标签: java android gradle android-studio

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

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

所以我特里是这样的:

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

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

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

  • stdlib(路径是/ Users / foo / workspace / stdlib)
    • dagger(路径为/ Users / foo / workspace / stdlib / dagger)
    • utils(path is / 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)
    • app(路径为/ Users / foo / workspace / MyApp / app)
    • libraries(符号链接到/ Users / foo / workspace / stdlib)
 dependencies {
      compile project(':libraries:dagger')
    }

知道如何在gradle中解决这种依赖吗?

1 个答案:

答案 0 :(得分:79)

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

例如,在' MyApp' project 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多项目配置。