Gradle dependencies:通过相对路径编译项目



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

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

所以我尝试的是这样的:

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

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

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

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

你知道如何在gradle中解决这样的依赖吗?

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

例如,在'MyApp'项目设置中。Gradle你可以试试这个:

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

你的"MyApp"构建。gradle必须以相对路径的gradle方式反映'dagger'模块的需求:

dependencies {
  compile project(':dagger')
}

就是这样。对你需要的每个外部模块重复这个步骤,你就会有一个合适的Gradle多项目配置。

最新更新