Приложение Spring Boot - процесс сборки с Angular не обновляет часть Angular - PullRequest
0 голосов
/ 11 декабря 2018

Приложение My Spring Boot содержит часть Java и часть Angular.Угловая часть (с index.html и т. Д.) Создается в папке src / main / resources / static.Работает отлично.Я заметил, что при сборке финального JAR часто (?) Статическая часть теряется.

Как получилось?Что я могу сделать, чтобы вставить статическую / HTML часть в финальный Spring Boot JAR?

Моя часть файла pom.xml показана ниже.Все неинтересные части (например, модульное тестирование и т. Д.) Удалены.

<build>
    ... 
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <executions>
      <execution>
        <id>npm install</id>
        <goals>
          <goal>exec</goal>
        </goals>
        <phase>initialize</phase>
        <configuration>
          <executable>npm</executable>
          <arguments>
            <argument>install</argument>
          </arguments>
        </configuration>
      </execution>
      <execution>
        <id>build Angular production code</id>
        <goals>
          <goal>exec</goal>
        </goals>
        <phase>compile</phase>
        <configuration>
          <executable>npm</executable>
          <arguments>
            <argument>run</argument>
            <argument>build</argument>
            <argument>--prod</argument>
          </arguments>
        </configuration>
      </execution>
    </executions>
  </plugin>
  ...
</build>

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Спасибо @Carlos Cavero!Вы указали мне в правильном направлении.Большое вам спасибо!

Проблема заключалась в том, что сборка npm была сделана на этапе компиляции.На некоторых машинах фаза «компиляции» Java-кода выполнялась до «компиляции» с помощью Angular «npm build».

Решение состояло в том, чтобы поместить фазу Angular (машинопись) npm ДО фазу компиляции.То есть: на этапе создания ресурсов.Это не может быть этап «проверки», потому что этот этап выполняется перед «установкой» с помощью «установки npm».

Теперь это правильная фаза сборки Angular / npm.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <executions>
      <execution>
        <id>npm install</id>
        <goals>
          <goal>exec</goal>
        </goals>
        <phase>initialize</phase>
        <configuration>
          <executable>npm</executable>
          <arguments>
            <argument>install</argument>
          </arguments>
        </configuration>
      </execution>
      <execution>
        <id>build Angular production code</id>
        <goals>
          <goal>exec</goal>
        </goals>
        <phase>generate-resources</phase>
        <configuration>
          <executable>npm</executable>
          <arguments>
            <argument>run</argument>
            <argument>build</argument>
            <argument>--prod</argument>
          </arguments>
        </configuration>
      </execution>
    </executions>
 </plugin>
0 голосов
/ 13 декабря 2018

Я использую фазу проверки для копирования статических угловых ресурсов в пружину:

mvn clean install

Использование родительского pom для разделения углов из проекта Spring:

<modules>
    <module>phs-frontend</module>
    <module>phs-frontend-web</module>
</modules>

Где phs-frontendПроект представляет собой угловой проект с pom-файлом и плагином maven clean:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <filesets>
                    <fileset>
                        <directory>dist</directory>
                        <includes>
                            <include>*</include>
                        </includes>
                    </fileset>
                </filesets>
            </configuration>
        </plugin>

        <plugin>
            <groupId>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <id>install node and npm</id>
                    <goals>
                        <goal>install-node-and-npm</goal>
                    </goals>
                    <configuration>
                        <nodeVersion>v6.10.3</nodeVersion>
                        <npmVersion>5.6.0</npmVersion>
                    </configuration>
                </execution>

                <execution>
                    <id>npm install</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                    <configuration>
                        <arguments>install</arguments>
                    </configuration>
                </execution>

                <execution>
                    <id>npm run build</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                    <configuration>
                        <arguments>run build</arguments>
                    </configuration>
                </execution>

            </executions>
        </plugin>

    </plugins>
</build>

А phs-frontend-web - это проект Spring:

<build>
    <plugins>

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
        <outputDirectory>${project.build.outputDirectory}/static/</outputDirectory>
                        <encoding>UTF-8</encoding>
                        <nonFilteredFileExtensions>
                            <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
                            <nonFilteredFileExtension>woff</nonFilteredFileExtension>
                            <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
                        </nonFilteredFileExtensions>
                        <resources>
                            <resource>
                                <directory>${project.basedir}/phs-frontend/dist</directory>
                                <filtering>true</filtering>
                                <includes>
                                    <include>**/*</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>           

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...