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

SpringBoot中Package打包的實現(xiàn)小結

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

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

1、前期準備工作

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

現(xiàn)有一張 User 表,其表結構如下:

idnameageemail
1Jone18test1@baomidou.com
2Jack20test2@baomidou.com
3Tom28test3@baomidou.com
4Sandy21test4@baomidou.com
5Billie24test5@baomidou.com
其對應的數(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項目進行整合MybaitsPlus進行數(shù)據(jù)頁面訪問展示即可來演示打包。

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

2、jar

SpringBoot項目默認的打包方式就 jar包、所以我們無需作出更多的配置就可以很輕松的進行項目打包部署。

1、pom修改

# 默認為jar、如果沒有自行編寫、默認不寫
<packaging>jar</packaging>

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

2、新建maven打包

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

4、執(zhí)行打包

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

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

3、war

springboot打成war運行在外部的tomcat或者服務中使用應該從以下思路開始

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

1、pom修改

springboot默認打包方式修改為war

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

2、添加/排除依賴

因為程序在啟動、編譯的時候還是需要servlet的依賴、等生命周期應該在打包完成之前排除掉內(nèi)嵌的tomcat
所以有兩種方式、任選其中一項都是可以的(不可以兩個同時存在)

#####   方式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:打包的時候可以不用包進去,外部提供、但是可以讓參與測試編譯等生命周期
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!--打包的時候可以不用包進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,運行等周期。
        相當于compile,但是打包階段做了exclude操作-->
    <scope>provided</scope>
</dependency>

3、修改啟動項

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

SpringBootServletInitializer源碼解讀

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

方式1:

springboot啟動類中去繼承SpringBootServletInitializer并且重寫configure方法來指定項目的入口

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

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

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

方式2:

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

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

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

4、部署外部容器

以Tomcat為例:
將war放入Tomcat的WebApps目錄下
然后啟動tomcat

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

注意事項:

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

4、解決訪問路徑

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

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

5、端口修改

Tomcat默認為8080
可以在這里修改指定端口

6、總結

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

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

?springbootApplication應用main類繼承SpringBootServletInitializer類實現(xiàn)configure在進行項目打包即可!

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

相關文章

最新評論

南溪县| 萨迦县| 阿巴嘎旗| 高密市| 武汉市| 梁平县| 米林县| 乐都县| 册亨县| 德化县| 黔西| 长岭县| 分宜县| 莒南县| 彰化市| 陈巴尔虎旗| 多伦县| 杭州市| 桦川县| 沂水县| 游戏| 和林格尔县| 黄平县| 资中县| 耒阳市| 西峡县| 神池县| 廊坊市| 沁水县| 邛崃市| 北安市| 大邑县| 怀安县| 汉源县| 平阳县| 永昌县| 丽水市| 揭西县| 游戏| 安庆市| 旬邑县|