JavaProjectRepo/docs/前后端整合.md

3.1 KiB
Raw Blame History

前后端一体化构建与打包说明

本文档说明如何在 Maven 构建流程中先编译前端pnpm再编译后端Java并在 package 阶段将两者一起打包,使生成的可运行 jar/war 直接可以访问前端首页 index.html

前置要求

  • 已安装 JDK推荐 17+)和 Maven3.6.3+)。
  • 已安装 Node.js推荐 18+)与 pnpm全局npm i -g pnpm
  • 当前项目结构:
    • 后端Spring Bootapp/pom.xml,源码在 app/src/main/java 与资源在 app/src/main/resources
    • 前端Vite/Vue位于 app/frontend,构建输出目录默认是 app/frontend/dist

构建流程概览

pom.xml 中集成了以下步骤:

  1. generate-resources 阶段:进入 frontend 目录,执行 pnpm install --frozen-lockfilepnpm run build
  2. process-resources 阶段:将前端构建产物从 frontend/dist 复制到后端资源目录 src/main/resources/static
  3. 随后执行后端 Java 编译与打包,最终产出可运行的 jar/war

这样在运行后端时Spring Boot 会从类路径的 static 目录自动提供 index.html 作为欢迎页入口(访问根路径 / 即可看到前端页面)。

关键 POM 配置(摘要)

已经在 app/pom.xml<build><plugins> 中加入:

  • exec-maven-plugin:在 Java 编译前执行 pnpm 安装与构建。
  • maven-resources-plugin:复制前端构建产物到 src/main/resources/static

无需手动改动目录,只需按下述命令执行即可。

常用命令

  • 开发运行(跳过测试):mvn -DskipTests spring-boot:run
    • 如需指定开发配置:mvn -DskipTests -Dspring-boot.run.profiles=dev spring-boot:run
  • 构建打包(跳过测试):mvn -DskipTests package
    • 构建过程中会自动执行前端构建并拷贝到后端资源。

运行与访问

  • 运行可执行包(以 war 为例,artifactId=platformversion=1.0
    • 默认运行:java -jar target/platform-1.0.war
    • 指定 dev 配置:java -Dspring.profiles.active=dev -jar target/platform-1.0.war
  • 访问:
    • 若启用 dev 配置并端口为 8093http://localhost:8093/
    • 若使用默认端口(例如 18080http://localhost:18080/

说明Spring Boot 会自动将 classpath:/static/index.html 作为欢迎页,访问根路径即可进入前端入口页面。

注意事项

  • 请确保 pnpm 可在构建机/开发机的环境变量中直接调用。
  • 若前端构建输出目录(dist)有自定义,请同步更新 POM 中的复制路径。
  • 如前端使用路由的 history 模式并期望后端兜底到 index.html,可按需添加后端控制器或使用前端服务器侧配置(当前方案以静态欢迎页为主)。

故障排查

  • 构建失败(找不到 pnpm):确认已安装并可在命令行执行 pnpm -v
  • 页面乱码:已在 POM 配置统一 JVM 编码为 UTF-8;在 Windows PowerShell 终端也应设置为 UTF-8

完成上述配置后,只需使用 Maven 的标准命令,即可实现前后端一体化构建和打包运行。