具有子依赖关系的嵌套依赖管理(嵌套的依赖关系)

时间:2015-09-22 08:55:00

标签: android gradle build.gradle

我有三个项目

../server/modelProject/
../client/apiProject/
../client/appProject/

apiProject需要取决于modelProjectappProject需要取决于apiProjectApi需要models,应用需要api。这是正常的事情,我认为:)

我的modelProject没什么特别的。

apiProject设置如下所示:

settings.gradle

include ':app', 'models'
project(':models').projectDir = new File('../../server/modelProject')

的build.gradle

dependencies {
    compile project(':models')
}

上次appProject

settings.gradle

include ':app', ':api'
project(':api').projectDir = new File("../client/apiProject")

的build.gradle

dependencies {
    compile project(':api')
}

我希望我正在处理的appProject取决于依赖于api的{​​{1}},以便我可以使用{{1}中的所有模型类也是。但事实并非如此。

我收到以下错误:

  

带路径的项目:在项目中找不到模型':api'。

解决这些问题我可以将model settings.gradle 扩展为:

appProject

但这不是一个很好的解决方案,而不是我的预期。

所以我的问题: 这是appProjects的正常行为吗?或者我做错了什么?我是否可以进行include ':app', ':api', ':models' project(':api').projectDir = new File('../client/apiProject') project(':models').projectDir = new File('../../server/modelProject') 仅依赖于gradle的任何更改,这些更改将自动包含`modelProject?

3 个答案:

答案 0 :(得分:1)

您的第一个settings.gradle文件将不会被使用。从gradle docs:

  

多项目构建必须在多项目层次结构的根项目中具有settings.gradle文件。这是必需的,因为设置文件定义了参与多项目构建的项目

所以你的第二种方法是在一个settings.gradle文件中列出所有项目是正确的。

答案 1 :(得分:0)

只需一个settings.gradle即可。您的项目文件树应该类似于:

项目

  • 客户端
    • apiProject
      • 的build.gradle
    • appProject
      • 的build.gradle
  • 服务器
    • build.gradle
  • setings.gradle
  • build.gradle

settings.gradle - >

include ':app', ':api', ':models'

project(':app').projectDir = new File(rootProject.projectDir,'client/appProject')
project(':api').projectDir = new File(rootProject.projectDir,'client/apiProject')
project(':models').projectDir = new File(rootProject.projectDir,'server/modelProject')

你解释了你的依赖流程。

答案 2 :(得分:0)

如果要在模块之间创建依赖关系,那么在包含所有模块的根文件夹中需要1个顶级settings.gradle