Как включить мультимодульный проект в Gradle? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь добавить функцию в многомодульный проект Gradle Java (если вам интересно, это весенняя интеграция).Я перенес проект на свою локальную машину и создаю отдельный проект Gradle, который ссылается на этот локально клонированный проект для разработки.

В моем новом проекте файл settings.gradle выглядит следующим образом:

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

rootProject.name = 'sprinttest'

и я ссылаюсь на него из моего build.gradle с помощью:

dependencies {
    compile project(":springint")
...

Проблема заключается в том, что он рассматривает только build.gradle этого каталога / git / spring -gration, а не его настройки.gradle.Это проблема, потому что есть довольно много подмодулей, на которые ссылается его файл settings.gradle, которые не обнаруживаются при запуске моего локального проекта.Я получаю ошибку:

  • Что пошло не так: возникла проблема при оценке проекта ': springint'.Проект с путем 'spring-интеграция-тест-поддержка' не найден в проекте ': springint'.

Если вы посмотрите на settings.gradle Spring-интеграции, вы увидите, что он включает в себявсе эти подпроекты динамически:

rootProject.name = 'spring-integration'

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

Я думаю, что gradle будет автоматически включать settings.gradle этой зависимости во время сборки, но это не так, как, например, именно поэтому, например, spring -grationtest-поддержка не найдена.Я что-то упустил или мне нужно «воссоздать» ту же логику из настроек этого проекта в свои собственные?

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете определить только один и только один settings.gradle файл.

https://docs.gradle.org/current/userguide/userguide_single.html#sec:defining_a_multiproject_build

Чтобы определить многопроектную сборку, необходимо создать файл настроек.Файл настроек находится в корневом каталоге исходного дерева и указывает, какие проекты включить в сборку

Если вы хотите включить подпроект в подпроект, используйте этотсинтаксис:

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}"
    }
}
...