实现web打jar包有俩种方式:
方式一:
前端开发好后将build构建好的文件拷贝到springboot的resources的static下(boot项目默认没有static,需要自己新建)
操作步骤:前端的项目使用命令 npm run build 或者 cnpm run build 打包生成web文件,在springboot项目中resources下建立static文件夹,将web文件中的文件复制到static中,然后去application中跑起来boot项目,这样直接访问index.html就可以访问到页面(api接口请求地址自己根据情况打包时配置或者在生成的web文件中config文件夹中的index.js中配置)
项目构建如下:
将构建的好的前端项目拷贝到该目录下然后对springboot进行打包即可
方式二:
在src/main下建立一个webapp文件夹,然后将前端项目的源文件复制到该文件夹下,具体结构如图
使用maven命令执行本地node打包命令,在执行mvn clean package命令时,利用maven插件执行cnpm run build命令。
实现方式:引入org.codehaus.mojo插件来进行maven调用node命令,pom.xml中为:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>exec-cnpm-install</id>
<phase>prepare-package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${cnpm}</executable>
<arguments>
<argument>install</argument>
</arguments>
<workingDirectory>${basedir}/src/main/webapp</workingDirectory>
</configuration>
</execution>
<execution>
<id>exec-cnpm-run-build</id>
<phase>prepare-package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${cnpm}</executable>
<arguments>
<argument>run</argument>
<argument>build</argument>
</arguments>
<workingDirectory>${basedir}/src/main/webapp</workingDirectory>
</configuration>
</execution>
</executions>
</plugin>
然后maven-resources-plugin插件将项目的前端文件打包到boot项目的classes中,具体的请参考pom.xml中的,
将webapp/web文件夹中的文件复制到src/main/resources/static中,并打包到classes
<!--copy文件到指定目录下 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
<executions>
<execution>
<id>copy-spring-boot-webapp</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>utf-8</encoding>
<outputDirectory>${basedir}/src/main/resources/static</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/webapp/web</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
然后执行 mvn clean
package
对于前后端分离的项目,本人推荐使用第一种方式进行打包,方便易懂,提供一种方式,利用shell进行打包:
1,先将前端进行打包
2,springboot 进行打包时,现将前端build好的包拷贝到static目录下,然后再执行mvn clean package命令对springboot项目打包,即完成springboot的web打jar包