我正在学习Gradle,我正在努力寻找最佳实践。
我将描述的项目是成功的。你可以在GitHub上克隆它,它是一个eclipse / java项目:https://github.com/pauloleitemoreira/GradleTests.git
假设我有一个MainProject,其中包含一些不属于MainProject的文件模块依赖项。
项目结构
x-MainProject
| |
| x-mainModule
|
x-LibProject
| |
| x-libModule
|
x-BaseLibProject
|
x-baseLibModule
MainProject / setting.gradle文件:
include ':mainModule'
include ':LibProject', ':LibProject:libModule'
project(':LibProject').projectDir = new File(settingsDir, '../LibProject')
project(':LibProject:libModule').projectDir = new File(settingsDir, '../LibProject/libModule')
/*???*/include ':BaseLibProject', ':BaseLibProject:baseLibModule'
/*???*/project(':BaseLibProject').projectDir = new File(settingsDir, '../BaseLibProject')
/*???*/project(':BaseLibProject:baseLibModule').projectDir = new File(settingsDir, '../BaseLibProject/baseLibModule')
LibProject / setting.gradle文件:
include ':libModule'
include ':BaseLibProject', ':BaseLibProject:baseLibModule'
project(':BaseLibProject').projectDir = new File(settingsDir, '../BaseLibProject')
project(':BaseLibProject:baseLibModule').projectDir = new File(settingsDir, '../BaseLibProject/baseLibModule')
BaseLibProject / setting.gradle文件:
include 'baseLibModule'
我注意到Build时只执行MainProject / setting.gradle文件。在构建MainProject时,不会执行其他LibProject / setting.gradle和BaseLibProject / setting.gradle。
我用/*???*/
标记了对我来说听起来很奇怪的行,因为我认为libModule必须知道你的依赖项在哪里。根据我的理解,这些行是不必要的,当构建LibModule时,gradle可以包含BaseLibModule。但不幸的是,如果我拿出这些内容,项目就不会构建。
我在考虑是否还有其他地方放置project(':...').projectDir = new File...
,以避免包含依赖项文件的依赖项?
答案 0 :(得分:0)
Build lifecycle章解释了多项目构建的工作原理。简单版本是根项目文件夹中有一个settings.gradle
,用于定义构建中包含哪些项目。每个项目都可以有build.gradle
(或者名称可能不同,或者文件可能丢失)。