SpringBoot Web項(xiàng)目打包獨(dú)立Jar(1)

項(xiàng)目架構(gòu)為前后端分離開發(fā)模式,客戶現(xiàn)場(chǎng)沒有Docker環(huán)境實(shí)施人員又不會(huì)安裝就只能想辦法將項(xiàng)目打包成獨(dú)立可運(yùn)行jar文件并提供Web靜態(tài)資源訪問。

目標(biāo)

  1. 獨(dú)立可運(yùn)行jar;
  2. 分離靜態(tài)html資源到j(luò)ar包外;
  3. 分離application.yml文件到j(luò)ar包外;
  4. 不依賴系統(tǒng)JDK資源,使用發(fā)布包內(nèi)部jre文件運(yùn)行;
  5. 項(xiàng)目依賴的lib打包到業(yè)務(wù)jar包外,減小業(yè)務(wù)jar體積;

創(chuàng)建SpringBoot項(xiàng)目

創(chuàng)建基礎(chǔ)項(xiàng)目

打開網(wǎng)站https://start.spring.io 按照下圖配置創(chuàng)建基礎(chǔ)項(xiàng)目

項(xiàng)目編譯采用Gradle方式編譯
開發(fā)語言Java
SpringBoot版本使用2.4.3
打包方式Jar方式
JDK版本8.x
Dependencies 暫時(shí)之選擇一個(gè)SpringWeb

image.png

配置完成后點(diǎn)擊下圖箭頭指向按鈕,會(huì)下載一個(gè)與項(xiàng)目名稱相同的zip包到本地,這里我們項(xiàng)目名稱沒有更改所以下載的zip包為demo.zip

image.png

創(chuàng)建測(cè)試頁面以及測(cè)試Api接口

1. 設(shè)置后段服務(wù)端口

將項(xiàng)目src/main/java/resources/application.properties文件更名為application.yml并將內(nèi)容做如下更改:

server:
  servlet:
    context-path: /demo
  port: 8099

文件內(nèi)容注解:api主目錄/demo,api端口8099

2. 創(chuàng)建測(cè)試Apil類

/src/main/java/com/example/demo目錄下創(chuàng)建包api,并創(chuàng)建類TestController并寫入如下內(nèi)容:

package com.example.demo.api;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("test")
public class TestController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello this is demo !";
    }
}

3. 創(chuàng)建WebConfig

/src/main/java/com/example/demo目錄下創(chuàng)建包config,并創(chuàng)建類WebConfig并寫入如下內(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/");
    }
}

4.創(chuàng)建Hello.html

src/main/java/resources/static創(chuàng)建目錄dist并在dist目錄下創(chuàng)建hello.html文件并寫入如下內(nèi)容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Demo</title>
</head>
<body>
<div style="color:red">
    Hello this is demo html;
</div>
</body>
</html>

所有文件創(chuàng)建完成后項(xiàng)目目錄結(jié)構(gòu)如下圖:

image.png

5. 啟動(dòng)項(xiàng)目并測(cè)試相關(guān)代碼正確性

打開DemoApplication文件,啟動(dòng)項(xiàng)目

image.png

6.測(cè)試Api接口

打開瀏覽器并輸入http://localhost:8099/demo/test/hello,如下圖所示則證明Api接口成功。

image.png

6. 靜態(tài)資源轉(zhuǎn)發(fā)正確性驗(yàn)證

打開瀏覽器并輸入http://localhost:8099/demo/dist/hello.html,如下圖所示則證明Api接口成功。

image.png

到達(dá)這里已經(jīng)完成基礎(chǔ)的SpringBoot測(cè)試項(xiàng)目搭建,可以關(guān)閉IDEA環(huán)境中的測(cè)試服務(wù)。

7.將項(xiàng)目打包成jar

在項(xiàng)目根目錄下執(zhí)行命令gradle clean build -x test完成項(xiàng)目打包編譯,命令運(yùn)行成功后會(huì)在項(xiàng)目build/libs下生成發(fā)布jar如下圖所示:

image.png

8.執(zhí)行發(fā)布JAR

將jar包拷貝到任意目錄,在jar包同級(jí)目錄下打開命令行工具輸入命令java -jar xx.jar如下圖所示:

image.png

命令執(zhí)行成功會(huì)有如下顯示:
image.png

執(zhí)行第6步,第7步測(cè)試無誤后證明發(fā)布Jar打包成功。
后續(xù)操作進(jìn)入下一篇
SpringBoot Web項(xiàng)目打包獨(dú)立Jar(2)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容