在完成SpringBoot Web項目打包獨立Jar(2)的所有操作后已經(jīng)完成了lib與application.yml文件的分離操作接下來要進行靜態(tài)文件分離操作匪蟀。
1. 分離靜態(tài)文件
打包時不必分離
resources/static
文件夾下內(nèi)容只需要將靜態(tài)目錄轉(zhuǎn)發(fā)更改一下目錄位置就可以了霎冯。原因是通常我們都采用前后端分離模式開發(fā)項目,前端代碼與后端代碼是分離在兩個項目中鳍贾。
1.1 打開WebConfig.java內(nèi)容如下:
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) {
// 配置靜態(tài)目錄轉(zhuǎn)發(fā)
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) {
// 配置靜態(tài)目錄轉(zhuǎn)發(fā)
// 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();
}
}
}
更改后靜態(tài)目錄默認讀取jar包所在目錄dist
路徑資源膳犹,修改后發(fā)布包結(jié)構(gòu)如下圖:
啟動項目測試相關(guān)接口與靜態(tài)頁面可以正常顯示。
1.2 使用獨立jre運行項目,脫離系統(tǒng)Java環(huán)境
下載對應(yīng)系統(tǒng)版本的jre文件宏蛉,存放到與jar包同一目錄下,jar包啟動命令使用
./jre/bin/java -jar xx.jar
(這里使用的linux版本性置,win版本命令做相應(yīng)更改即可)最終jar發(fā)布包結(jié)構(gòu)如下圖:
寫在最后
至此已經(jīng)完成了SpringBoot項目打包獨立可執(zhí)行Jar所有操作拾并,這是一種比較原始的部署模式,使用場景多在為用戶快速搭建本地可使用服務(wù)而不依賴用戶系統(tǒng)配置鹏浅。
文章中如有錯誤的地方望指出嗅义。