Создайте развертываемую флягу в многомодульном проекте - PullRequest
0 голосов
/ 18 января 2019

У меня есть такая структура проекта:

parent/
  server/    - Spring Boot Application
    pom.xml
  client-1/  - Angular Web Application
    pom.xml
  client-2/  - Angular Web Application
    pom.xml
  pom.xml

Я могу создать это приложение, где Spring Boot Application - это jar, которое содержит два Angular-клиента в папке static/.

Однако в настоящее время pom.xml приложения Spring Boot Application должно знать о клиентах, и я хотел бы перенести это в родительский каталог.

Здесь мне не хватает некоторых навыков Maven.


Вот что должно произойти:

  1. Создание веб-клиентов
  2. Сборка Spring Boot Application
  3. Копирование веб-клиентов на static/

В настоящее время я использую maven-resources-plugin для копирования содержимого клиента, но я заметил, что есть проблема - если клиенты еще не собраны, то ничего не будет скопировано в окончательный jar, что означает, что веб-клиенты отсутствует для развертывания.

Прямо сейчас, это pom.xml родителя:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>mz</groupId>
    <artifactId>mz-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>mz-server</module>
        <module>mz-admin</module>
        <module>mz-web</module>
    </modules>

</project>

Как мне это сделать?


Ниже показано, как я сейчас строю jar, используя maven-resources-plugin. Но, как уже говорилось, в этом случае серверный проект должен знать о клиентах, а также это не гарантирует, что клиенты получают сборку в первую очередь.

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals><goal>copy-resources</goal></goals>
            <configuration>
                <outputDirectory>${build.directory}/classes/static/</outputDirectory >
                <resources>
                    <resource>
                        <directory>../mz-admin/dist</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
        <execution>
            <id>copy-web</id>
            <phase>validate</phase>
            <goals><goal>copy-resources</goal></goals>
            <configuration>
                <outputDirectory>${build.directory}/classes/static/</outputDirectory >
                <resources>
                    <resource>
                        <directory>../mz-web/dist</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

1 Ответ

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

Добавьте свои client-1 и client-2 в качестве зависимости к вашему server проекту. Это обеспечит сборку ваших клиентов до того, как ваш сервер и файлы станут доступны.

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