Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gradle中的依赖关系_Java_Eclipse_Gradle - Fatal编程技术网

Java Gradle中的依赖关系

Java Gradle中的依赖关系,java,eclipse,gradle,Java,Eclipse,Gradle,我正在研究Gradle,我正试图找到它的最佳实践 我将描述的项目是成功的。您可以在GitHub上进行克隆,它是一个eclipse/java项目: 假设我有一个MainProject,其中包含一些不属于MainProject的文件模块依赖项 项目结构 x-MainProject | | | x-mainModule | x-LibProject | | | x-libModule | x-BaseLibProject |

我正在研究Gradle,我正试图找到它的最佳实践

我将描述的项目是成功的。您可以在GitHub上进行克隆,它是一个eclipse/java项目:

假设我有一个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')
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支持其他项目。听起来你有独立的项目,并试图以一种可能导致麻烦的方式连接它们。从库中生成输出并将其发布到二进制存储库中。然后通过这些二进制依赖关系来表示依赖关系。