maven 如何对react 打包编译成war包的方法

381 阅读2分钟

需求背景

因为前端(react脚手架)项目打包一直用的jekens第三方库用脚本执行命令行的方式去打包(减少对jekens第三方库的依赖),想着直接能不能用maven(java的打包工具)去打包前端代码。

准备工作

因为这些事情需要安装maven插件去完成,其中对maven的版本要求是3.6的版本或者更高版本,附上maven的安装包zip下载链接maven 下载(记得下载-bin.zip为后缀的文件),下载以后解压好,存在任意盘。

文件目录结构

build 是react build后的产物 ;node是放node和npm等安装包的地方;node-modules是放npm 下载好的react需要的插件 ;src和public放的react源码 ;target是执行生成war包命令后自动生成的文件夹,为war包的存放位置;package.xml为文件夹编译成war包的设置文件;pom.xml为maven的相关配置文件;

实现步骤

1、首先在java项目根目录的pom.xml配上你的项目文件夹(比如:face-v),配置好了以后你的前端文件夹就可以执行maven 的脚本了

\

\

我的前端相关代码叫文件夹为face-v

2、下载好了maven安装包后,需要配置好idea(java编辑器)里的maven设置,如图

\

idea设置maven 配置按钮

\

第一步,设置maven的安装目录,第二步,把maven的设置文件导入进去,setting文件的设置需要根据自己项目的实际情况去配置,下图是我项目的配置

setting 的具体改动

\

我们项目是固定在一个机器上进行打包,所以配置了该机器的镜像

\

这个是网络代理,因为网络较差,下载插件会失败(网络好的话,可不设置)

\

\

画红线部分就是写上maven的安装位置下的repository文件夹,其余不用设置

3、去拷贝别的java srv下的pom.xml到你的项目(我的是face-v)根目录下(为什么一定要pom.xml文件?答:maven靠pom.xml去执行),把没用的内容都删掉(只留下一些版本和项目名称这些内容即可)

pom详细设置解答

***<project xmlns="maven.apache.org/POM/4.0.0" xmlns:xsi="www.w3.org/2001/XMLSch…


**  xsi:schemaLocation="maven.apache.org/POM/4.0.0 maven.apache.org/xsd/maven-4…

4.0.0

前端代码文件夹名称

${version}

pom

biolive

app-parent

6.0.0

../../pom.xml

    

      

                com.github.eirslett

                frontend-maven-plugin

                1.12.1

               

                    ${basedir} 

                 

               

                   

                        install node and npm

                        compile  

                       

                            install-node-and-npm

                       

                       

                            v16.14.0

                            6.14.5

                       

                   

                   

                        npm install

                        compile

                       

                            npm

                       

                       

                            install

                       

                   

                   

                        npm run build  

                        compile

                       

                            npm

                       

                

                            run build

                       

                   

               

           

 2.2.1

 

         

                   make-assembly

                    package

                     

                          single

                     

                   

               

              false

             

                  package.xml

                   

${project.artifactId}

snapshots

Nexus server

http://172.100.1.50:8081/nexus/content/repositories/snapshots

releases

Nexus server

http://172.100.1.50:8081/nexus/content/repositories/releases

package.xml的详细设置

    assembly

   

        war

   

    true

   

       

            ${basedir}\build

            </outputDirectory>

       

   

\