我有三个项目
../server/modelProject/
../client/apiProject/
../client/appProject/
apiProject
需要取决于modelProject
和appProject
需要取决于apiProject
。
Api
需要models
,应用需要api
。这是正常的事情,我认为:)
我的modelProject
没什么特别的。
apiProject
设置如下所示:
include ':app', 'models'
project(':models').projectDir = new File('../../server/modelProject')
dependencies {
compile project(':models')
}
上次appProject
:
include ':app', ':api'
project(':api').projectDir = new File("../client/apiProject")
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?
答案 0 :(得分:1)
您的第一个settings.gradle文件将不会被使用。从gradle docs:
多项目构建必须在多项目层次结构的根项目中具有settings.gradle文件。这是必需的,因为设置文件定义了参与多项目构建的项目
所以你的第二种方法是在一个settings.gradle文件中列出所有项目是正确的。
答案 1 :(得分:0)
只需一个settings.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