Spring-boot: запуск для многомодульного проекта maven

У меня есть настройка микросервисов Eureka Server и несколько приложений с весенней загрузкой в ​​качестве клиентов Eureka. Это настроено как многомодульный проект maven на родительском (корневом) уровне. Ниже представлена ​​иерархия:

parent (multi-module parent pom.xml)
  |_ eureka-server-spring-boot-app (individual pom.xml)
  |_ eureka-client-spring-boot-app-1 (individual pom.xml)
  |_ eureka-client-spring-boot-app-2 (individual pom.xml)
  |_ eureka-client-spring-boot-app-3 (individual pom.xml)
  .
  .

Я пытался запустить все модули в порядке, определенном в родительском файле pom.xml. Но когда я запускаю mvn spring-boot:run на родительском уровне, он запускает только первый модуль (Eureka Server). Остальные модули не развернуты. Я пробовал читать SO, но не нашел подходящих ответов.

Я хочу, чтобы maven запускал все модули по порядку из родительского каталога. Можно ли как-нибудь достичь этого?

@Karthikeyan Проблема в данном случае не связана ни с микросервисы, ни с Netflix-Eureka.

g00glen00b 09.05.2018 10:52

Я согласен. Я просто дал дополнительную информацию. Так что, если структура проекта неправильная, я могу исправить и это. Есть предложения @ g00glen00b?

Ashutosh Vaidya 09.05.2018 11:41

Причина, по которой это не работает, заключается в том, что Maven будет последовательно запускать эти плагины Maven в каждом проекте, однако, поскольку запуск проекта загрузки Spring не завершается немедленно, он никогда не достигнет цели spring-boot:run для второго или третьего модуля. Решением было бы создать отдельный сценарий оболочки и заставить каждый из модулей работать в другом потоке. Не знаю, есть ли у Maven что-то подобное. На первый взгляд, форк JVM не помог.

g00glen00b 09.05.2018 14:00
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
1 709
1

Ответы 1

Вместо этого используйте mvn spring-boot:start, так как это не блокирует другие операции.

Это действительно не запускает приложение. Я считаю, что он предназначен для запуска приложения перед запуском интеграционных тестов и остановки после этого. Так что, даже если это начнется, это может быть хорошим хаком / обходным решением, но не совсем для производства, верно?

Ashutosh Vaidya 16.05.2018 09:33
РЕДАКТИРОВАТЬ С mvn spring-boot:run он развертывает / запускает приложение, но останавливается после запуска модуля eureka-server, который является первым по порядку. Чтобы использовать mvn spring-boot:start, мне нужно внести какие-либо изменения в родительский pom.xml? Выдает ошибку как No plugin found for prefix 'spring-boot' in the current project.
Ashutosh Vaidya 16.05.2018 10:21

Идея состоит в том, что вы добавляете конфигурацию плагина к каждому подмодулю, привязываетесь к цели где-то между очисткой и установкой, а затем просто запускаете mvn clean install из корневого модуля.

Alex McAllister 22.05.2018 16:05

Я согласен, что это не подходит для производства, но, вероятно, никакая конфигурация с использованием плагина maven не будет подходить для производства. Как предлагает @ g00glen00b, решение на основе сценария или решение на основе заданий Jenkins с использованием Puppet / Chef, вероятно, лучше.

Alex McAllister 22.05.2018 16:14

Другие вопросы по теме