Фактический порядок «автопроводки» внешнего интерфейса в банке с помощью exec-maven-plugin в проекте Spring Boot - PullRequest
0 голосов
/ 15 октября 2019

Мы поддерживаем проект с бэкендом, разработанным с помощью Spring Boot, и с веб-интерфейсом, разработанным с помощью React. Проект имеет один модуль, поэтому он имеет родительский pom и дочерний pom для внутреннего интерфейса. Для построения внешнего интерфейса мы используем exec-maven-plugin, объявленный в родительском pom, например:

       <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.6.0</version>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>exec-npm-run-build</id>
                                <phase>prepare-package</phase>
                                <configuration>
                                    <workingDirectory>${project.basedir}/co-frontend</workingDirectory>
                                    <executable>npm</executable>
                                    <arguments>
                                        <argument>run</argument>
                                        <argument>build</argument>
                                    </arguments>
                                </configuration>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

, а для упаковки всего проекта (я полагаю) мы используем spring-boot-maven-plugin, объявленный в backend pom:

        <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Вопрос в том, каков порядок сборки переднего и заднего плана. Похоже, обновленный фронт волшебно упакован в получившуюся банку. Но мы не видим никаких прямых указаний относительно того, когда и почему артефакты внешнего интерфейса попадают в общую папку в банке. Также сбивает с толку тот факт, что согласно журналу сборки exec-maven-plugin вызывается последним после того, как jar уже собран. Как мы можем быть уверены, что мы действительно получим последнюю версию лицевой стороны каждой сборки банки внутри банки?

...