Java 如何在Gradle中包含多模块项目?
我正在尝试向一个多模块GradleJava项目中添加一个特性(如果您好奇的话,这是spring集成)。我已经把这个项目转移到我的本地机器上,并且正在创建一个单独的Gradle项目,该项目将引用这个本地克隆的项目进行开发 在我的新项目中,settings.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
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集成测试支持”的项目
设置.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}"
}
}