若依前后端打包成jar运行

前端修改:
1.修改前端路由src/router/index.js
修改前:mode: 'history',
修改后:mode: 'hash',

2.修改打包部署根路径.env.production
修改前:VUE_APP_BASE_API = '/prod-api'
修改后:VUE_APP_BASE_API = '/'

后端修改:
1.修改admin模块里面的com/web/controller/system/SysIndexController.java
修改前:
@RestController
@RequestMapping("/")
return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", ProjectConfig.getName(), ProjectConfig.getVersion());
修改后:
@Controller
@RequestMapping(value = {"/", "/index"})
return "redirect:/index.html";

2.修改framework模块里面的com/framework/config/SecurityConfig.java
修改前:
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
修改后:
.antMatchers(HttpMethod.GET, "/","/index", "/*.html", "/**/*.html", "/**/*.ico", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers(HttpMethod.GET,"/static/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

3.配置添加<plugin>到admin模块中的pom.xml里面的<build><plugins>节点下面,保证打包的时候复制dist里面的内容到resources中的static里面
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>copy-frontend-resources</id>
            <phase>process-resources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.outputDirectory}/static</outputDirectory>
                <resources>
                    <resource>
                        <directory>${project.basedir}/../vue/dist</directory>
                        <filtering>false</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
<think>我们有一个需求:将若依项目(RuoYi)的前后端合并打包一个可执行的JAR。 若依项目是一个典型的前后端分离项目,前端通常使用Vue,后端使用Spring Boot。要将前后端合并一个可执行的JAR,我们需要将前端构建后的静态资源集到Spring Boot的JAR中,因为Spring Boot默认可以打包静态资源并作为Web服务提供。 步骤概述: 1. 构建前端项目:将Vue项目构建静态文件(通常在dist目录中)。 2. 将构建好的前端静态文件复制到Spring Boot项目的资源目录下(如`src/main/resources/static`)。 3. 配置Spring Boot项目,使其能够正确提供这些静态资源(通常Spring Boot会自动处理)。 4. 打包Spring Boot项目,生一个可执行的JAR文件,该文件含了前端和后端。 详细步骤: 1. 构建前端项目: 进入若依的前端项目目录(如`ruoyi-ui`),运行以下命令构建: ```bash npm install # 如果尚未安装依赖 npm run build:prod # 生产环境构建 ``` 构建完后,会在前端项目目录下生`dist`文件夹,里面含静态文件。 2. 复制前端静态文件到Spring Boot项目: 将`dist`文件夹中的所有内容复制到Spring Boot项目的`src/main/resources/static`目录下。如果该目录不存在,可以创建。 3. 配置Spring Boot项目(可选): 一般情况下,Spring Boot会自动处理静态资源。但为了确保正确,可以检查一下Spring Boot的配置文件(如`application.yml`)中是否有关于静态资源的特殊配置,可能需要调整。 另外,确保你的Spring Boot项目中有处理前端路由的控制器,因为前端是单页应用(SPA),需要将所有非静态资源的请求转发到`index.html`。若依的后端通常已经含了这个控制器(比如`ErrorController`或者自定义的`ForwardController`),如果没有,可以添加如下代码: ```java @Controller public class ForwardController { @RequestMapping(value = "/{path:[^\\.]*}") public String forward() { return "forward:/index.html"; } } ``` 4. 打包Spring Boot项目: 使用Maven或Gradle打包。以Maven为例,在Spring Boot项目的根目录下运行: ```bash mvn clean package ``` 打包后,会在`target`目录下生一个可执行的JAR文件(如`ruoyi.jar`)。 5. 运行: 使用`java -jar ruoyi.jar`运行即可。 注意事项: - 在构建前端之前,确保前端项目中的`vue.config.js`(或类似配置文件)中配置的`publicPath`正确(通常设置为`./`或空,避免资源路径问题)。 - 如果若依的后端已经集了类似的处理,那么可能不需要额外添加控制器。请参考若依的官方文档。 如果上述步骤中遇到问题,可以检查以下几点: - 确保前端构建没有错误。 - 确保静态资源被正确复制到了Spring Boot项目的资源目录。 - 检查Spring Boot的日志,看是否有资源加载失败。 另外,若依项目本身可能已经提供了如何前后端一起部署的文档,建议查阅若依的官方文档(如RuoYi-Vue版本)。 引用说明: 在构建和打包过程中,我们参考了Maven和Spring Boot的标准打包方式[^1][^2]。</think>要将若依(RuoYi前后端分离项目合并打包一个可执行的JAR,需通过以下步骤实现: ### 解决方案步骤 1. **前端构建静态资源** 进入前端项目目录(如`ruoyi-ui`),执行生产环境构建: ```bash npm install npm run build:prod # 生dist目录(含静态资源) ``` 2. **集静态资源到Spring Boot** 将生的`dist`目录内容复制到Spring Boot项目的资源目录: ```bash # 示例路径(根据实际项目调整) cp -r ruoyi-ui/dist/* ruoyi-admin/src/main/resources/static/ ``` 3. **配置Spring Boot处理前端路由** 在Spring Boot中添加控制器,确保Vue路由刷新不报404: ```java @Controller public class IndexController { @RequestMapping(value = {"/", "/{path:[^\\.]*}"}) public String forward() { return "forward:/index.html"; } } ``` 4. **配置Maven打包插件** 在`pom.xml`中添加Spring Boot Maven插件: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> </configuration> </plugin> </plugins> </build> ``` 5. **执行Maven打包命令** 在项目根目录运行: ```bash mvn clean package -DskipTests ``` 生JAR位于:`ruoyi-admin/target/ruoyi-admin.jar` 6. **运行JAR文件** ```bash java -jar ruoyi-admin.jar ``` ### 关键配置说明 - **静态资源路径**:确保`src/main/resources/static/`含前端所有构建文件(HTML/CSS/JS) - **路由兼容**:控制器将未匹配的请求重定向到`index.html`,支持Vue Router - **打包验证**:检查JAR内是否含`BOOT-INF/classes/static/`目录(存放前端资源) ### 注意事项 1. 前端构建前需修改生产环境API地址(指向后端路径) 2. 若依默认配置可能需调整: ```yaml # application.yml spring: resources: static-locations: classpath:/static/ ``` 3. 使用JDK 11+ 确保兼容Spring Boot 2.x+ > 此方案通过将前端资源嵌入Spring Boot JAR,利用内置Tomcat实现单JAR运行[^1][^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值