Spring boot и Gradle многомодульный проект, не удалось правильно загрузить зависимости - PullRequest
0 голосов
/ 25 апреля 2018

В основном у меня есть сборка проекта весенней загрузки с Gradle.Проект имеет корневой проект, который содержит еще 4 подмодуля.Корневой проект settings.gradle выглядит так:

rootProject.name = 'proj'

include 'proj-app'
include 'proj-integration-tests'
include 'proj-model'
include 'proj-service'

Модуль приложения содержит плагин spring-boot-gradle-plugin и предоставляет некоторые API-интерфейсы.

Я хотел создатьПодмодуль proj-интеграции-tests, который содержит только интеграционные тесты.Проблема началась здесь, так как мне нужна была зависимость от proj-app.

Так что в тестах proj-интеграционных тестов у меня есть build.gradle, который содержит:

dependencies {
  testCompile('org.springframework.boot:spring-boot-starter-web')
  testCompile('org.springframework.boot:spring-boot-starter-test')
  testCompile project(':proj-app')
  testCompile project(':proj-model')
}

, и мне нужен proj-зависимость приложения от теста интеграции:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ProjApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

требовал запуска загрузочного приложения Spring (ProjApplication.class), расположенного в модуле proj-app.

Ошибка, полученная от Gradleэто: «не удается найти символ ProjApplication».

Почему Gradle не может должным образом управлять зависимостью proj-app?Заранее спасибо;)

1 Ответ

0 голосов
/ 01 мая 2018

Кажется, что зависимость от proj-app строится способом весенней загрузки.Это означает, что полученный артефакт представляет собой исполняемый файл с пружинной загрузкой в ​​далеком банке. Вот почему proj-интеграционные тесты не смогли найти классы из proj-app во время компиляции.
Таким образом, чтобы сохранить исполняемый файл jar, ичтобы proj-app использовался в качестве зависимости в модуле proj-интеграции-tests, я изменил build.gradle из приложения proj для создания обоих jar-файлов: способом весенней загрузки и стандартной версией:

bootJar {
baseName = 'proj-app-boot'
enabled = true
}

jar {
baseName = 'proj-app'
enabled = true
}
...