Как запустить два проекта Springboot одновременно - PullRequest
0 голосов
/ 09 января 2019

Мой проект включает в себя сервис просмотра и интерфейс сервиса. Каталог проекта выглядит так:

Myproject/
    springboot1/
    springboot2/

И springboot1, и springboot2 могут работать по отдельности. Теперь я запускаю их, чтобы открыть оба терминала и выполнить следующие команды:

springboot1

cd Myproject/springboot1/
mvn spring-boot:run

springboot2

cd Myproject/springboot2/
mvn spring-boot:run

Есть ли способ запустить два проекта одновременно? Например, добавьте глобальный файл pom.xml в каталог Myproject и выполните mvn spring-boot: прямо в каталоге Myproject.

Ответы [ 3 ]

0 голосов
/ 09 января 2019

Да , как вы упомянули, нужно что-то вроде глобального pom xml, чем вы можете достичь путем объединения двух проектов в качестве модулей в ваше упаковочное приложение (Myproject). Позвольте мне дать вам некоторое представление:

  • Создайте новое приложение springBoot с глобальным pom-файлом и переместите все общие (1 & 2 project) jar или зависимости в этот глобальный pom-файл. Кроме того, поскольку каждое приложение в качестве основного приложения, удалите его, поскольку оно больше не требуется в качестве отдельной сущности, но также убедитесь, что у вас есть какой-либо пользовательский код в соответствующем главном файле, чем перенести этот код в основной файл упаковочного проекта.

  • Сборка проектов 1 и 2 в виде jar-пакетов и добавление их в пакетный проект как зависимости.

  • Проект Springboot1 будет выглядеть следующим образом:

    ...
    <groupId>org.springboot1.module</groupId>
    <artifactId>springboot1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    ...
    
  • Проект Springboot2 будет выглядеть следующим образом:

    ...
    <groupId>org.springboot2.module</groupId>
    <artifactId>springboot2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    ... 
    
  • Упаковка проекта пом будет выглядеть так:

    ...
    <dependency>
        <groupId>org.springboot1.module</groupId>
        <artifactId>springboot1</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springboot2.module</groupId>
        <artifactId>springboot2</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    ...
    
  • В основной файл упаковки добавьте новые местоположения @Components, которые приходят из зависимостей

    @SpringBootApplication
    @ComponentScan(basePackages = 
       {"org.springboot1.module.one.*","org.springboot2.module.two.*"})
    public class Myproject {
       public static void main( String[] args )
       {
          SpringApplication.run(Myproject.class, args);
       }
    

    }

  • Запустите основной класс приложения упаковки, и оно начнется с двух зависимых проектов.

Надеюсь, что вышеперечисленные шаги будут работать с некоторыми другими изменениями в зависимости от структуры вашего проекта. Кроме того, для большей ясности вы также можете обратиться Maven Project_Aggregation

0 голосов
/ 09 января 2019

Вы можете создать приложение-оболочку Spring Boot, которое запускает их как отдельные сервлеты. Они должны находиться в контекстах приложения-родителя и совместно использовать приложение-оболочку как родительский контекст. Это выглядело бы примерно так:

public static void main(String[] args) {
    new SpringApplicationBuilder().parent(WrapperApplication.class).web(WebApplicationType.NONE)
        .child(Application1.class).web(WebApplicationType.SERVLET)
        .sibling(Application2.class).web(WebApplicationType.SERVLET)
        .run(args);
}
0 голосов
/ 09 января 2019

Попробуйте это

mvn springboot1 / spring-boot: запустить | mvn springboot2 / spring-boot: запустить

...