最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中Package打包的實(shí)現(xiàn)小結(jié)

 更新時(shí)間:2026年03月06日 08:55:56   作者:何必余生  
本文詳細(xì)介紹了將SpringBoot項(xiàng)目打包成jar或war,包括jar的默認(rèn)打包、war的內(nèi)嵌tomcat排除和配置,以及部署到外部Tomcat的步驟,適合開發(fā)者理解和實(shí)踐項(xiàng)目部署,感興趣的可以了解一下

SpringBoot項(xiàng)目在日常開發(fā)中是現(xiàn)在開發(fā)形式中的基礎(chǔ)模式了、在構(gòu)建、編碼、測試、運(yùn)行、打包、部署等一系列過程中、打包的方式就是其中一個(gè)非常重要的環(huán)節(jié)、SpringBoot默認(rèn)的打包方式是jar但是在日常部署的方式中、我們需要根據(jù)不同的部署情況進(jìn)行講項(xiàng)目打成不成的包進(jìn)行服務(wù)器部署、話又說來說、SpringBoot內(nèi)嵌了tomcat但是打包方式確實(shí)jar、所以在這里需要進(jìn)行整理一下如何講一個(gè)SpringBoot項(xiàng)目打包成jar或者war進(jìn)行項(xiàng)目發(fā)布部署。

1、前期準(zhǔn)備工作

  • 擁有 Java 開發(fā)環(huán)境以及相應(yīng) IDE
  • 熟悉 Spring Boot
  • 熟悉 Maven
  • 掌握基本的打包部署能力

現(xiàn)有一張 User 表,其表結(jié)構(gòu)如下:

idnameageemail
1Jone18test1@baomidou.com
2Jack20test2@baomidou.com
3Tom28test3@baomidou.com
4Sandy21test4@baomidou.com
5Billie24test5@baomidou.com
其對(duì)應(yīng)的數(shù)據(jù)庫 Schema 腳本如下:
DROP TABLE IF EXISTS user;

CREATE TABLE user
(
	id BIGINT(20) NOT NULL COMMENT '主鍵ID',
	name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
	age INT(11) NULL DEFAULT NULL COMMENT '年齡',
	email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
	PRIMARY KEY (id)
);

最終我們將初始化Springboot項(xiàng)目進(jìn)行整合MybaitsPlus進(jìn)行數(shù)據(jù)頁面訪問展示即可來演示打包。

訪問方式:localhost:8080/list/all

2、jar

SpringBoot項(xiàng)目默認(rèn)的打包方式就 jar包、所以我們無需作出更多的配置就可以很輕松的進(jìn)行項(xiàng)目打包部署。

1、pom修改

# 默認(rèn)為jar、如果沒有自行編寫、默認(rèn)不寫
<packaging>jar</packaging>

# 修改最終打成jar包的包名
<build>
    <!--指定打包名稱-->
        <finalName>springboot-jar-war</finalName>
</build>

2、新建maven打包

3、編寫maven打包執(zhí)行腳本(排除測試、關(guān)聯(lián)項(xiàng)目)

4、執(zhí)行打包

最終打成jar包的存放地:在target目錄下

java -jar springboot-jar-war.jar即可執(zhí)行(springboot內(nèi)嵌了tomcat)

3、war

springboot打成war運(yùn)行在外部的tomcat或者服務(wù)中使用應(yīng)該從以下思路開始

  • 1、springboot內(nèi)嵌了tomcat、需要排除內(nèi)部容器
  • 2、啟動(dòng)類中springboot啟動(dòng)通過main方法進(jìn)入項(xiàng)目外部容器部署需要告知項(xiàng)目的入口類加載

1、pom修改

springboot默認(rèn)打包方式修改為war

<!--打包方式-->
<packaging>war</packaging>

2、添加/排除依賴

因?yàn)槌绦蛟趩?dòng)、編譯的時(shí)候還是需要servlet的依賴、等生命周期應(yīng)該在打包完成之前排除掉內(nèi)嵌的tomcat
所以有兩種方式、任選其中一項(xiàng)都是可以的(不可以兩個(gè)同時(shí)存在)

#####   方式1:打包完成后直接排除內(nèi)嵌Tomcat依賴
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!--打包排除內(nèi)部的tomcat-->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

#####   方式2:打包的時(shí)候可以不用包進(jìn)去,外部提供、但是可以讓參與測試編譯等生命周期
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!--打包的時(shí)候可以不用包進(jìn)去,別的設(shè)施會(huì)提供。事實(shí)上該依賴?yán)碚撋峡梢詤⑴c編譯,測試,運(yùn)行等周期。
        相當(dāng)于compile,但是打包階段做了exclude操作-->
    <scope>provided</scope>
</dependency>

3、修改啟動(dòng)項(xiàng)

繼承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,實(shí)現(xiàn)configure方法:

SpringBootServletInitializer源碼解讀

從上述源碼注釋中可以看出

方式1:

springboot啟動(dòng)類中去繼承SpringBootServletInitializer并且重寫configure方法來指定項(xiàng)目的入口

@SpringBootApplication
@MapperScan("com.zkr.springbootjarwar.mapper")
public class SpringbootJarWarApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootJarWarApplication.class, args);
    }

    /**
     * 繼承SpringbootJarWarApplication 重寫 configure
     * 實(shí)現(xiàn)war外部程序主入口的指定
     * @param builder
     * @return
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootJarWarApplication.class);
    }
}

方式2:

新增加一個(gè)類繼承SpringBootServletInitializer實(shí)現(xiàn)configure

/**
 * @author LG
 * @date 2021/2/23 - 17:23
 * @Motto "何必余生、及時(shí)行樂、Good luck mi"
 */
public class Springbootjarwar extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        //此處的Application.class為帶有@SpringBootApplication注解的啟動(dòng)類
        return builder.sources(SpringbootJarWarApplication.class);
    }
}
  • 更加推薦使用第一種!不要問經(jīng)驗(yàn)所得

maven執(zhí)行打包腳本生成war

4、部署外部容器

以Tomcat為例:
將war放入Tomcat的WebApps目錄下
然后啟動(dòng)tomcat

訪問成功:但是訪問的時(shí)候需要添加包名才可以

注意事項(xiàng):

使用外部Tomcat部署訪問的時(shí)候,application.properties(或者application.yml)中配置的
server.port=
server.servlet.context-path=
將失效,請(qǐng)使用tomcat的端口,tomcat,webapps下項(xiàng)目名進(jìn)行訪問。
為了防止應(yīng)用上下文所導(dǎo)致的項(xiàng)目訪問資源加載不到的問題,
建議pom.xml文件中標(biāo)簽下添加最終的包名指定標(biāo)簽:

4、解決訪問路徑

我們將項(xiàng)目打成war包之后、可能在有些時(shí)候需要添加項(xiàng)目名稱來訪問、但有時(shí)候不需要、就想springboot中application.yml中可以通過server.servlet.context-path=來指定、那么外部的時(shí)候Tomcat也可以指定。并且修改端口

# path : / 表示不需要項(xiàng)目名
# docBase:項(xiàng)目路徑 這里寫相對(duì)路徑、相對(duì)webapps、不要問我怎么知道的  appBase有指定
<Context path="/" docBase="項(xiàng)目地址路徑" debug="0" />

5、端口修改

Tomcat默認(rèn)為8080
可以在這里修改指定端口

6、總結(jié)

jar不需要修改任何配置、使用maven進(jìn)行腳本打包即可

war:需要排除內(nèi)部tomcat、或者添加編譯測試運(yùn)行等周期的servlet支持、在最終同樣也排除了容器

?springbootApplication應(yīng)用main類繼承SpringBootServletInitializer類實(shí)現(xiàn)configure在進(jìn)行項(xiàng)目打包即可!

到此這篇關(guān)于SpringBoot中Package打包的實(shí)現(xiàn)小結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot Package打包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

龙陵县| 贡嘎县| 宽城| 荥阳市| 弋阳县| 赤城县| 光山县| 山东| 怀来县| 根河市| 中阳县| 乌拉特前旗| 安阳县| 黔东| 盖州市| 弋阳县| 扬州市| 荣成市| 兴业县| 云阳县| 德安县| 东安县| 同心县| 图木舒克市| 芜湖县| 阜阳市| 南汇区| 吉林省| 双流县| 额尔古纳市| 皮山县| 伽师县| 泗阳县| 宽甸| 天长市| 平凉市| 赤壁市| 宁海县| 鱼台县| 高雄市| 霍州市|