Есть 2 основных варианта:
- Разделите 3 приложения (spring-boot, реагировать-public, реагировать-admin) на отдельные репозитории и также разверните их отдельно.
- Используйте 1 репо для всех с мультимодульной сборкой Maven
Я собираюсь предположить из вашего вопроса, что вы хотите сделать вариант 2.
В этом случае создайте структуру, подобную этой:
+ project
| - backend-api
| - frontend-public
| - frontend-admin
Родитель pom.xml
должен ссылаться на 3 модуля:
<modules>
<module>backend-api</module>
<module>frontend-public</module>
<module>frontend-admin</module>
</modules>
Каждый из модулей должен ссылаться на родительский пом:
<parent>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
Ваш проект Spring Boot больше не сможет использовать родительский объект Spring Boot, поэтому вам необходимо импортировать зависимость спецификации:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
В модулях frontend- * вы должны создать zip-файл, который затем можно вставить в модуль Spring Boot, используя maven-dependency-plugin
:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unzip-webapp-public</id>
<phase>process-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.mycompany.myproject</groupId>
<artifactId>frontend-public</artifactId>
<version>${project.parent.version}</version>
<classifier>distribution</classifier>
<type>zip</type>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/classes/static/public</outputDirectory>
</configuration>
</execution>
распакуйте-WebApp-админ
Процесс-ресурсы
распаковывать
com.mycompany.myproject
фронтенд-администратор
$ {Project.parent.version}
распределение
застежка-молния
$ {Project.build.directory} / классы / статический / админ
Это разархивирует приложения реакции на /static/public
и /static/admin
. В результате Spring Boot будет обслуживать их в /public
и /admin
в вашем приложении.