У меня есть проект начальной загрузки, на котором запущено приложение VueJS со следующей структурой папок:
root
+-- client
| +-- [vue app]
| +-- pom.xml
+-- server
| +-- [spring boot app]
| +-- pom.xml
+-- pom.xml
С client
я запускаю следующие команды через pom.xml
при сборке приложения. Сценарий устанавливает npm
и запускает npm run build
, чтобы создать папку dist/
для копирования в следующем фрагменте кода.
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>${frontend-maven-plugin.version}</version>
<executions>
<!-- Install our node and npm version to run npm/node scripts-->
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v11.5.0</nodeVersion>
</configuration>
</execution>
<!-- Install all project dependencies -->
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<!-- optional: default phase is "generate-resources" -->
<phase>generate-resources</phase>
<!-- Optional configuration which provides for running any npm command -->
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<!-- Build and minify static files -->
<execution>
<id>npm run build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run build</arguments>
</configuration>
</execution>
</executions>
</plugin>
В файле pom.xml
в каталоге server
у меня есть следующий конфиг, чтобы скопировать ресурсы из client/dist/
в статические ресурсы server
classpath:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<!-- Copy Vue files to src-folder in server -->
<id>copy Vue.js frontend content</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>src/main/resources/public</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>${project.parent.basedir}/client/dist</directory>
<includes>
<!-- Make sure assets are added to static/ folder in vue.config.js-->
<include>static/</include>
<include>index.html</include>
<include>favicon/</include>>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Конечная цель - создать приложение с помощью конвейера jenkins в док-контейнер.
Однако моя проблема в том, что из-за производственных настроек я не могу загрузить или установить узел / npm через maven (все внешние пакеты заблокированы по соображениям безопасности).
Поэтому мне нужен способ для создания приложения vue и копирования файлов в путь к классам при создании файла .jar
без фактического выполнения этого через maven.
Идея состояла в том, чтобы использовать образ докера с установленным node
и выполнить сборку через образ докера. Тем не менее, я понятия не имею о реальном подходе этого. Если у кого-то есть идея, это будет высоко оценено.