vue打包部署到springboot,通过tomcat运行

  • tomcat默认端口 8080
  • springboot端口 9132
  • vue 端口 9131

框架

项目是基于SpringBoot+Vue前后端分离的仓库管理系统

  • 后端:SpringBoot + MybatisPlus
  • 前端:Node.js + Vue + element-ui
  • 数据库:mysql

一. 打包Vue项目

cmd中输入命令 npm run build后就可打包成功

打包完成后项目路径下会生成一个新的文件夹dist,打包后的东西都在里面

二、整合Vue项目和SpringBoot项目

将Vue项目dist文件夹下的所有文件Copy到SpringBoot项目的resource/static目录下

(没有static新建 一个static文件夹


然后配置Spring

三、修改Pom文件

1. 设置打包为war包(如果不需要可以不设置)

默认打包成 jar包

想要打包成war包,需要在pom文件中添加以下这一行

复制代码
<packaging>war</packaging>

2 . 排除掉 web 里面自带的 Tomcat

  • 只需要在spring-boot-starter-web 这个依赖上添加如下内容:
复制代码
<exclusions>
  <exclusion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
  </exclusion>
</exclusions>

3. 添加一个自己的 Tomcat

添加以下依赖:

复制代码
<dependency>
  	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>2.7.5</version>
    <scope>provided</scope>
</dependency>

查看spring-boot-starter-tomcat的版本

进入你的Maven本地仓库目录(默认是~/.m2/repository),然后导航到org/springframework/boot/spring-boot-starter-tomcat目录,该目录下会包含不同版本的文件夹,版本号就包含在这些文件夹名称中。

四、添加配置类

在SpringBoot同级目录下添加一下配置类ServletInitializer

让其继承一个类:SpringBootServletInitializer,并且覆盖 configure 方法,在方法中添加 return builder.sources(WarehouseSystemApplication.class);

其中:WarehouseSystemApplication.class是 启动类类名(每个人都不一样)

复制代码
package com.rabbiter;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {
    public ServletInitializer() {
        System.out.println("初始化ServletInitializer");
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(WarehouseSystemApplication.class);
    }
}

或者重新写一个类 SpringBootStartApplication,和WarehouseSystemApplication平级,

复制代码
package com.rabbiter;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class SpringBootStartApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(WarehouseSystemApplication.class);
    }
}

五、设置 configurations

Run -->Edit Configurations

六、选择Tomcat运行

运行后自动调转网页

七、跨域问题

存在跨域问题,不处理的话登录时会出现如下问题AxiosError: Network Error

要么设置跨域访问(各种操作后还是不行,后续解决)

要么把tomcat/springboot/vue端口都设置一致,比如都设置为 9131 (完美解决~)

相关推荐
reembarkation17 小时前
vue3中使用howler播放音频列表
前端·vue.js·音视频
ywf121517 小时前
Spring Boot接收参数的19种方式
java·spring boot·后端
要换昵称了18 小时前
Axios二次封装及API 调用框架
前端·vue.js
angerdream18 小时前
最新版vue3+TypeScript开发入门到实战教程之Pinia详解
前端·javascript·vue.js
假装没有名字19 小时前
Vue2、Vue3中的$scopedSlots和$slots区别
vue.js
独断万古他化19 小时前
【Java 实战项目】多用户网页版聊天室:消息传输模块 —— 基于 WebSocket 实现实时通信
java·spring boot·后端·websocket·ajax·mybatis
Sweet锦20 小时前
SpringBoot 3.5 集成 InfluxDB 1.8
spring boot·时序数据库
Java水解20 小时前
Spring Boot 消息队列与异步处理
spring boot·后端
程序员侠客行21 小时前
Tomcat 从陌生到熟悉
java·tomcat·web
徐小夕1 天前
花了一周时间,我们开源了一款PDF编辑SDK,支持在线批注+脱敏
前端·vue.js·github