Ice*_*nte 3 java gradle multi-module
我正在尝试将一个功能添加到多模块 Gradle Java 项目中(如果您好奇的话,它是 spring 集成)。我已将该项目分叉到本地计算机上,并正在创建一个单独的 Gradle 项目,该项目引用此本地克隆的项目进行开发。
在我的新项目中,settings.gradle 文件如下所示:
include ":springint"
project(":springint").projectDir = file("/users/me/git/spring-integration")
rootProject.name = 'sprinttest'
Run Code Online (Sandbox Code Playgroud)
我从我的 build.gradle 中引用它:
dependencies {
compile project(":springint")
...
Run Code Online (Sandbox Code Playgroud)
问题是它似乎只考虑 /git/spring-integration 目录的 build.gradle 而不是它的 settings.gradle。这是一个问题,因为有很多子模块是通过其 settings.gradle 文件引用的,当我运行本地项目时,这些子模块不会被拾取。我得到的错误是:
- 出了什么问题:评估项目“:springint”时出现问题。在项目“:springint”中找不到路径为“spring-integration-test-support”的项目。
如果您查看 spring-integration,settings.gradle
您会发现它动态地包含所有这些子项目:
rootProject.name = 'spring-integration'
rootDir.eachDir { dir ->
if (dir.name.startsWith('spring-integration-')) {
include ":${dir.name}"
}
}
Run Code Online (Sandbox Code Playgroud)
我认为 gradle 会在构建时自动合并此依赖项的 settings.gradle 但事实并非如此,因为这就是为什么找不到spring-integrationtest-support 的原因。我是否遗漏了某些内容,或者我应该从该项目的设置“重新创建”相同的逻辑到我自己的设置中?
您只能定义一个且仅一个settings.gradle
文件。
https://docs.gradle.org/current/userguide/userguide_single.html#sec:defining_a_multiproject_build
要定义多项目构建,您需要创建一个设置文件。设置文件位于源代码树的根目录中,并指定要在构建中包含哪些项目。
如果您想在子项目中包含子项目,请使用以下语法:
include "a-subproject:an-inner-subproject"
Run Code Online (Sandbox Code Playgroud)
它可以看起来像这样:
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}"
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4348 次 |
最近记录: |