SpringBoot Web项目打包独立Jar(3)

在完成SpringBoot Web项目打包独立Jar(2)的所有操作后已经完成了lib与application.yml文件的分离操作接下来要进行静态文件分离操作。

1. 分离静态文件

打包时不必分离resources/static 文件夹下内容只需要将静态目录转发更改一下目录位置就可以了。原因是通常我们都采用前后端分离模式开发项目,前端代码与后端代码是分离在两个项目中。

1.1 打开WebConfig.java内容如下:

package com.example.demo.conifg;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 配置静态目录转发
        registry.addResourceHandler("/dist/**").addResourceLocations("classpath:/static/dist/");
    }
}

将文件做如下更改:

package com.example.demo.conifg;

import org.springframework.context.annotation.Configuration;
import org.springframework.util.ResourceUtils;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.io.File;
import java.io.FileNotFoundException;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 配置静态目录转发
//        registry.addResourceHandler("/dist/**").addResourceLocations("classpath:/static/dist/");
        try {
            String jar_parent = new File(ResourceUtils.getURL("classpath:").getPath()).getParentFile().getParentFile().getParent();
            String html_path = jar_parent + "/dist/";
            registry.addResourceHandler("/dist/**").addResourceLocations(html_path);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

更改后静态目录默认读取jar包所在目录dist路径资源,修改后发布包结构如下图:

image.png

启动项目测试相关接口与静态页面可以正常显示。

1.2 使用独立jre运行项目,脱离系统Java环境

下载对应系统版本的jre文件,存放到与jar包同一目录下,jar包启动命令使用
./jre/bin/java -jar xx.jar(这里使用的linux版本,win版本命令做相应更改即可)最终jar发布包结构如下图:

image.png

写在最后

至此已经完成了SpringBoot项目打包独立可执行Jar所有操作,这是一种比较原始的部署模式,使用场景多在为用户快速搭建本地可使用服务而不依赖用户系统配置。

文章中如有错误的地方望指出。

你可能感兴趣的:(SpringBoot Web项目打包独立Jar(3))