Создайте войну для моего веб-приложения (Spring Vue и NuxtJS)

#spring #vue.js #deployment #web-applications #build

Вопрос:

Я пытаюсь встроить свое веб-приложение в войну, которая должна содержать как мой интерфейс (написанный на Vue NuxtJS), так и мой бэкэнд (Spring). Архитектура моего приложения выглядит следующим образом:

 |
- src
 |
 -main
  |
  - frontend
    | 
    - dist
    | 
    - components
    |
    - pages
    |
   ...
  |
 ...
  |
  - webapp
    |
    - WEB-INF
      | my backend files
 

Я пытаюсь использовать этот интерфейс-maven-плагин.
Это моя конфигурация сборки в pom.xml:

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <warName>MyApp</warName>
                    <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>1.12.0</version>

                <executions>
                    <execution>
                        <id>Install node and yarn</id>
                        <goals>
                            <goal>install-node-and-yarn</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <nodeVersion>v15.13.0</nodeVersion>
                            <yarnVersion>v1.22.10</yarnVersion>
                        </configuration>
                    </execution>

                    <execution>
                        <id>yarn install</id>
                        <goals>
                            <goal>yarn</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <arguments>install</arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>Copy Vue frontend into Spring Boot target static folder</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/classes/static</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/frontend/dist</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
 

После запуска mvn clean package я проверил свою целевую папку и заметил , что мои файлы интерфейса скопированы из src/main/frontend/dist в target/MyApp/WEB-INF/classes/static.
Однако, когда я развертываю свою войну в Tomcat, я не могу визуализировать свои страницы интерфейса.

Если я правильно понял, я должен увидеть свою главную index.html файл на локальном хосте:8080/MyApp. Этого не происходит, и я также не вижу других страниц.

Серверная часть работает должным образом (на локальном хосте:8080/MyApp/api/MyAPI).

Я явно делаю что-то не так. Кто-нибудь может помочь мне определить проблему? Спасибо.