springboot项目打包部署时把静态资源打包到jar中、或修改静态资源根目录

本文介绍如何在SpringBoot项目中正确配置并打包静态资源到jar包内,包括修改默认静态资源位置的方法及运行配置。

通常一个web项目静态资源都放在webapp下,打包成war包便可运行。

但是当我们打包成jar包时会只有后台资源,而没有前台资源。


如果想打包时静态资源也打包到jar中,springboot默认静态资源存放目录为static中,如图


当我们引入一个js或css时,如果使用绝对路径、static默认是不计入路径的、如下图

当前目录引入css绝对路径时应该这样写  /resources/css/.... 、而不是/static/resources/css/...、 建议写为相对路径。


如果要修改springboot的默认静态资源位置、只需要在application.properties中添加

# 修改默认的静态资源存放目录
spring.resources.static-locations=classpath:/

classpath:/(后面加入你存放静态资源的目录即可)。


然后打包为jar包。---java -jar 你的jar包     运行。输入网址便可访问。


这样Springboot方式部署是不是简单许多。


提示:

    更改端口

server.port=9090

在配置文件加入即可。



<think>我们正在处理将Vue3项目打包部署SpringBoot项目中的需求。根据引用内容,有几种部署方式:生成war包通过Tomcat运行,者生成jar包直接运行。此外,引用[4]提到了使用Nginx部署前后端分离的项目,但用户明确要求将Vue3项目打包部署SpringBoot中,因此我们主要关注将Vue3构建的静态资源整合到SpringBoot项目中。步骤概述:1.构建Vue3项目,生成静态资源文件(dist目录)2.将dist目录下的文件复制到SpringBoot项目的资源目录(通常是src/main/resources/static)3.配置SpringBoot项目,确保能够正确提供静态资源4.打包SpringBoot项目jarwar)5.部署运行详细步骤:步骤1:构建Vue3项目在Vue3项目根目录下执行构建命令(假设使用Vite):```bashnpmrunbuild```构建完成后,会在项目根目录生成`dist`目录,里面包含静态文件(index.html,js,css,图片等)。步骤2:将静态资源复制到SpringBoot项目将Vue3项目dist目录下的所有文件复制到SpringBoot项目的`src/main/resources/static`目录下(如果没有static目录,则创建)。步骤3:配置SpringBoot项目确保SpringBoot项目能够正确提供静态资源SpringBoot默认会从`classpath:/static`、`classpath:/public`等目录提供静态资源。如果使用war包部署并需要继承`SpringBootServletInitializer`,则按照引用[1][^1]和引用[2][^2]的方式,创建一个类继承`SpringBootServletInitializer`并覆盖`configure`方法。例如,在SpringBoot项目中创建`ServletInitializer`类:```javapackagecom.example.demo;//替换为你的包名importorg.springframework.boot.builder.SpringApplicationBuilder;importorg.springframework.boot.web.servlet.support.SpringBootServletInitializer;publicclassServletInitializerextendsSpringBootServletInitializer{@OverrideprotectedSpringApplicationBuilderconfigure(SpringApplicationBuilderapplication){returnapplication.sources(DemoApplication.class);//替换为你的SpringBoot主启动类}}```步骤4:打包SpringBoot项目4.1如果打包jar包,在pom.xml中添加spring-boot-maven-plugin插件(如引用[3][^3]):```xml<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>```然后在项目根目录下执行Maven命令:```bashmvncleanpackage```生成的jar包位于target目录下。4.2如果打包为war包,需要修改pom.xml中的打包方式:```xml<packaging>war</packaging>```并确保有servlet相关的依赖(如果使用内嵌Tomcat,需要将Tomcat作用域设置为provided):```xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency>```然后同样执行`mvncleanpackage`,生成war包。步骤5:部署运行-jar包:使用`java-jaryour-application.jar`运行。-war包:将war包放入Tomcat的webapps目录下,启动Tomcat即可。注意事项:1.确保Vue3项目中的路由模式与SpringBoot静态资源服务兼容。如果使用history模式,需要在SpringBoot中配置一个全局的URL重写,将所有的前端路由请求都转发到index.html。这可以通过添加一个SpringBoot的控制器来实现:```java@ControllerpublicclassFrontendController{@RequestMapping(value="/{path:[^\\.]*}")publicStringredirect(){return"forward:/index.html";}}```者使用配置方式(实现WebMvcConfigurer)添加ViewController。2.如果Vue3项目中有调用后端API的请求,在开发环境下通常配置了代理(proxy),但在生产环境中,需要确保请求的URL指向正确的后端地址。可以在Vue3项目的构建前设置环境变量,者构建后修改静态文件中的配置(如果支持)。另一种方式是在SpringBoot中提供API接口,这样前后端同源,就不会有跨域问题。3.如果使用前后端分离部署(即Vue3项目单独部署在Nginx等服务器上,SpringBoot只提供API),则不需要将静态资源放入SpringBoot项目中。但根据用户需求,我们是将静态资源整合到SpringBoot中。4.引用[4][^4]提到了使用Nginx部署,但用户要求的是部署SpringBoot中,因此我们不考虑Nginx。总结:将Vue3构建的静态资源放入SpringBootstatic目录,然后打包SpringBoot项目,即可将Vue3项目整合到SpringBoot中运行。下面我们通过一个简单的示例来演示:示例步骤:1.在Vue3项目(假设项目名为my-vue-app)中运行`npmrunbuild`,生成dist目录。2.将dist目录下的所有文件复制到SpringBoot项目(假设项目名为my-spring-boot)的`src/main/resources/static`目录。3.在SpringBoot项目中,如果使用history路由,添加一个控制器来处理前端路由(如上所述)。4.打包SpringBoot项目jarwar)。5.运行jar部署war包到Tomcat。这样就完成了Vue3项目SpringBoot中的部署。相关问题:1.如何解决Vue3项目部署SpringBoot后的路由404问题?2.如何配置Vue3项目的生产环境API请求地址?3.如何优化SpringBoot打包后的静态资源加载速度?4.如何实现SpringBoot项目与Vue3项目的热部署快速迭代?</think># Vue3项目打包部署SpringBoot的详细步骤 下面是将Vue3项目打包并集成到SpringBoot应用的完整流程,包含两种部署方式:jar部署和war包部署。 ## 一、Vue3项目打包步骤 ### 1. 配置生产环境API地址 在Vue3项目的`.env.production`文件中配置后端API地址: ```ini VITE_API_BASE_URL=/api ``` ### 2. 构建Vue3项目 ```bash npm run build ``` 构建完成后会在项目根目录生成`dist`目录,包含静态资源文件 ## 二、SpringBoot项目配置 ### 1. 创建SpringBoot项目结构 ``` src/ ├── main/ │ ├── java/ │ ├── resources/ │ │ ├── static/ # 存放Vue3构建结果 │ │ └── templates/ └── pom.xml ``` ### 2. 复制Vue3构建结果 将Vue3项目的`dist`目录内容复制到SpringBoot的`src/main/resources/static`目录 ### 3. 添加前端路由处理控制器 ```java @Controller public class FrontendController { @GetMapping(value = { "/", "/login", "/dashboard", "/profile/{path:.*}" // 添加所有前端路由路径 }) public String forward() { return "forward:/index.html"; } } ``` ## 三、打包部署方式 ### 方式1:打包为可执行JAR(推荐) #### 1. 配置pom.xml ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </build> ``` #### 2. 构建JAR包 ```bash mvn clean package ``` #### 3. 运行应用 ```bash java -jar target/your-application.jar ``` ### 方式2:打包为WAR部署到Tomcat #### 1. 修改pom.xml ```xml <packaging>war</packaging> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> </dependencies> ``` #### 2. 添加Servlet初始化类 ```java public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(YourApplication.class); } } ``` #### 3. 构建WAR包 ```bash mvn clean package ``` #### 4. 部署到Tomcat 将生成的WAR文件复制到Tomcat的`webapps`目录并启动Tomcat ## 四、关键配置说明 ### 1. 静态资源配置 SpringBoot默认从以下位置提供静态资源: - `classpath:/static` - `classpath:/public` - `classpath:/resources` - `classpath:/META-INF/resources` ### 2. 解决跨域问题(可选) ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE") .allowedHeaders("*"); } } ``` ### 3. 配置API代理(可选) ```java @RestController @RequestMapping("/api") public class ApiController { @GetMapping("/**") public ResponseEntity<?> proxyApi(HttpServletRequest request) { // 实现API转发逻辑 return restTemplate.exchange( "http://backend-service" + request.getRequestURI(), HttpMethod.valueOf(request.getMethod()), new HttpEntity<>(request.getBody(), headers), byte[].class ); } } ``` ## 五、验证部署结果 1. 访问SpringBoot应用根URL(如:http://localhost:8080) 2. 应显示Vue3应用的首页 3. 验证前端路由是否正常工作 4. 测试API接口调用是否正常 ## 六、部署架构图 ```mermaid graph TD A[Vue3项目] -->|构建| B(dist静态文件) B --> C[复制到SpringBoot static目录] D[SpringBoot应用] -->|打包| E[JAR/WAR] E -->|部署| F[服务器] G[客户端浏览器] -->|访问| F F -->|提供静态资源| G F -->|处理API请求| H[后端服务] ``` ## 常见问题解决 1. **路由404问题**:确保添加了前端路由控制器 2. **静态资源加载失败**:检查文件是否在正确目录(static目录) 3. **API调用失败**:检查API代理配置是否正确 4. **跨域问题**:在开发环境配置代理,生产环境使用CORS配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值