Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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_Gradle_Multi Module - Fatal编程技术网

Java 如何在Gradle中包含多模块项目?

Java 如何在Gradle中包含多模块项目?,java,gradle,multi-module,Java,Gradle,Multi Module,我正在尝试向一个多模块GradleJava项目中添加一个特性(如果您好奇的话,这是spring集成)。我已经把这个项目转移到我的本地机器上,并且正在创建一个单独的Gradle项目,该项目将引用这个本地克隆的项目进行开发 在我的新项目中,settings.gradle文件如下所示: include ":springint" project(":springint").projectDir = file("/users/me/git/spring-integration") rootProject

我正在尝试向一个多模块GradleJava项目中添加一个特性(如果您好奇的话,这是spring集成)。我已经把这个项目转移到我的本地机器上,并且正在创建一个单独的Gradle项目,该项目将引用这个本地克隆的项目进行开发

在我的新项目中,settings.gradle文件如下所示:

include ":springint"
project(":springint").projectDir = file("/users/me/git/spring-integration")

rootProject.name = 'sprinttest'
我在build.gradle中引用了:

dependencies {
    compile project(":springint")
...
问题在于,它似乎只考虑了/git/Spring集成目录的构建。这是一个问题,因为在运行本地项目时,有相当多的子模块通过其settings.gradle文件被引用,而这些子模块没有被获取。我得到的错误是:

  • 出了什么问题: 评估项目“:springint”时出现问题。 在项目:springint中找不到路径为“spring集成测试支持”的项目
如果查看spring integration的
设置.gradle
,您会发现它动态地包含了所有这些子项目:

rootProject.name = 'spring-integration'

rootDir.eachDir { dir ->
    if (dir.name.startsWith('spring-integration-')) {
        include ":${dir.name}"
    }
}

我认为gradle会在构建时自动合并此依赖项的settings.gradle,但事实并非如此,因为这就是为什么找不到spring integrationtest支持的原因。我是否遗漏了什么,或者我是否应该将相同的逻辑从该项目的设置“重新创建”到我自己的设置中?

您只能定义一个且只能定义一个
设置.gradle
文件

要定义多项目生成,需要创建一个设置文件。 设置文件位于源目录树的根目录中,并且 指定要包含在生成中的项目

如果要在子项目中包含子项目,请使用以下语法:

include "a-subproject:an-inner-subproject"
它可以是这样的:

include "springint"
project(":springint").projectDir = file("/users/me/git/spring-integration")

rootProject.name = 'sprinttest'

project(":springint").projectDir.eachDir { dir ->
    if (dir.name.startsWith('spring-integration-')) {
        include "springint:${dir.name}"
    }
}