Java Gradle中的依赖关系
我正在研究Gradle,我正试图找到它的最佳实践 我将描述的项目是成功的。您可以在GitHub上进行克隆,它是一个eclipse/java项目: 假设我有一个MainProject,其中包含一些不属于MainProject的文件模块依赖项 项目结构Java Gradle中的依赖关系,java,eclipse,gradle,Java,Eclipse,Gradle,我正在研究Gradle,我正试图找到它的最佳实践 我将描述的项目是成功的。您可以在GitHub上进行克隆,它是一个eclipse/java项目: 假设我有一个MainProject,其中包含一些不属于MainProject的文件模块依赖项 项目结构 x-MainProject | | | x-mainModule | x-LibProject | | | x-libModule | x-BaseLibProject |
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')
include ':libModule'
include ':BaseLibProject', ':BaseLibProject:baseLibModule'
project(':BaseLibProject').projectDir = new File(settingsDir, '../BaseLibProject')
project(':BaseLibProject:baseLibModule').projectDir = new File(settingsDir, '../BaseLibProject/baseLibModule')
include 'baseLibModule'
LibProject/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')
include ':libModule'
include ':BaseLibProject', ':BaseLibProject:baseLibModule'
project(':BaseLibProject').projectDir = new File(settingsDir, '../BaseLibProject')
project(':BaseLibProject:baseLibModule').projectDir = new File(settingsDir, '../BaseLibProject/baseLibModule')
include 'baseLibModule'
BaseLibProject/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')
include ':libModule'
include ':BaseLibProject', ':BaseLibProject:baseLibModule'
project(':BaseLibProject').projectDir = new File(settingsDir, '../BaseLibProject')
project(':BaseLibProject:baseLibModule').projectDir = new File(settingsDir, '../BaseLibProject/baseLibModule')
include 'baseLibModule'
我注意到构建时只执行MainProject/setting.gradle文件。其他LibProject/setting.gradle和BaseLibProject/setting.gradle在我构建主项目时不会执行
我用/*???*/
标记了听起来很奇怪的行,因为我想libModule必须知道依赖项在哪里。在我的理解中,这些行是不必要的,gradle可以在构建LibModule时包含BaseLibModule。但不幸的是,如果我去掉这些线,项目将无法构建
我在想,是否有其他地方可以放置
项目(“:…”)。projectDir=新文件…
,以避免包含依赖项文件的依赖项?Gradle用户指南中的章节解释了多项目构建是如何工作的。简单的版本是在根项目文件夹中有一个settings.gradle
,它定义了构建中包含的项目。每个项目都可以有build.gradle
(或者名称可能不同,或者文件可能丢失)。在发布问题之前,我已经阅读了一些成绩帮助文件。我不是在问。你想要在你的项目中设置的是根文件夹中的settings.gradle
,在那里你将包括MainProject、LibProject、BaseLibProject和它们的子项目。目前,您有几个多项目构建,它们正在重新使用各种目录树。这是一个相当混乱的设置,违反了通常的惯例,并导致您的麻烦。顺便说一下,最好不要从版本控制中排除<代码> GraceDests/MeMyTea/GooLe< /Cord>目录。您必须考虑到我不能更改这些LIBS的文件夹。这些LIB支持其他项目。听起来你有独立的项目,并试图以一种可能导致麻烦的方式连接它们。从库中生成输出并将其发布到二进制存储库中。然后通过这些二进制依赖关系来表示依赖关系。