Разверните Spring Boot на локальном Tomcat в IntelliJ - PullRequest
0 голосов
/ 24 сентября 2018

Добрый день

Я новичок в Spring и Spring Boot, обычно я работаю с Eclipse IDE и JSF.Я работаю в проекте, который использует Angular для FrontEnd и Spring Boot для BackEnd. У меня была следующая структура Maven

 PARENT
   FRONTEND
     pom.xml
   BACKEND
     pom.xml
pom.xml

FrontEnd создает webjar и использует FrontEnd-Maven-PLugin для сборкиУгловое приложение, бэкэнд зависит от этого webJar.BackEnd pom.xml имеет следующую конфигурацию:

<packaging>war</packaging>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

Я не хочу использовать встроенный сервер Tomcat.В Intellij я импортировал проект как проект Maven. В конфигурациях Run / Debug помимо конфигурации Spring Boot по умолчанию я создал еще одну, в которой «Path to Jar» указывает на артефакт * .war, а цель Maven настроена на«Maven Goal package».

Таким образом, когда я запускаю эту конфигурацию, FrontEnd компилируется и собирается.Но либо я выбираю Spring Boot, либо эту конфигурацию, я всегда вижу следующий журнал в консоли запуска

 o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

Полагаю, это означает, что я развертываю приложение на встроенном сервере.

Итакмои вопросы:

1: Как я могу развернуть и запустить приложение из Intellij в локальном Tomcat вместо встроенного.2: Есть ли лучшая конфигурация для сборки внешнего интерфейса и его автоматического развертывания с внутренним модулем на Intellij?

В Eclipse IDE в проекте JSF я просто добавляю сервер в проект иeclipse создайте и разверните на нем приложение и управляйте всем.

Заранее спасибо С уважением

1 Ответ

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

1: Как я могу развернуть и запустить приложение из Intellij в локальном Tomcat вместо встроенного. У вас уже есть область действия, поэтому встроенный кот не будет включен в ваш артефакт.IntelliJ имеет возможность загружать предоставленные зависимости на пути к классам при запуске.(он называется Include dependencies with "Provided scope "и может быть найден на вкладке" Конфигурация ", а затем в разделе" Окружение "вашей конфигурации весеннего запуска.

Вместо использования конфигурации весеннего запуска вы также можете самостоятельно установить tomcat локально.и используйте плагин сервера приложений для управления им и развертывания на нем.

Создайте новую конфигурацию запуска для "Tomcat", а затем выберите "Локальный". Здесь вы сможете настроить свой локальный экземпляр tomcat, чтобы он зналгде его развернуть.

2: Есть ли лучшая конфигурация для сборки внешнего интерфейса и его автоматического развертывания с внутренним модулем на Intellij?

Я не могу сказать, если это лучше, но у меня есть аналогичная установка, использующая другой подход. Не стесняйтесь проверить мой репо здесь: https://github.com/phazebroek/tour-of-rockstars Клиентский модуль содержит приложение углового фронтенда, а API - это пружина-boot backend. Клиент использует frontend-maven-plugin для его сборки и помещает выходные данные в целевой путь. Затем мой модуль API использует плагин maven-resources-pluginn скопировать их в статическую папку моей целевой папки весенней загрузки во время фазы проверки maven.Результатом этого является то, что мое угловое приложение упаковано и включено в мой war-файл загрузочного приложения backend spring в статической папке, чтобы я мог доставлять его содержимое с помощью spring.Так, например, если вы запустите свое приложение на: 8080, вы сможете подключиться к своему угловому приложению через тот же порт.Например: 8080 / app / foo.

Обратите внимание, что вы должны добавить к конечным точкам REST префикс / api, например, чтобы избежать коллизий с вашими угловыми видами :-) Если у вас есть конечная точка REST, называемая / foo, например,но у вас также есть угловой виджет с URL / Foo, он будет сталкиваться.(Я еще не исправил эту проблему для этого репозитория ...)

Дополнительное примечание: вызов backind api из приложения angular в автономном режиме на другом порту

Кстати, контроллеры содержат аннотацию @CrossOrigin(origins = "*"), разрешающую запросы, поступающие от углового приложения, когда оно запускается как отдельное приложение, на другой порт.Это должно использоваться только в режиме разработки!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...