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

Springboot實(shí)現(xiàn)打包部署項(xiàng)目全過(guò)程

 更新時(shí)間:2026年03月17日 08:46:46   作者:程序員一博  
本文介紹了如何使用Spring Boot Maven插件將項(xiàng)目打包成可運(yùn)行的JAR包,并提供了在IDEA中快速打包、使用`java -jar`運(yùn)行項(xiàng)目、發(fā)布到服務(wù)器以及創(chuàng)建啟動(dòng)腳本的方法,此外,還討論了使用Spring Boot Maven插件構(gòu)建可執(zhí)行的JAR包以及傳統(tǒng)的WAR包打包方式

一、jar包方式打包

1、pom文件引入插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

boot使用這個(gè)插件可以將項(xiàng)目打包成一個(gè)可運(yùn)行的jar,無(wú)需在目標(biāo)服務(wù)器安裝tomcat等

spring-boot-maven-plugin項(xiàng)目存在于spring-boot-tools 目錄中spring-boot-maven-plugin默認(rèn) 有5 個(gè)goals; repackage、 run、start、stop、 build-info

  • 在打包的時(shí)候默認(rèn)使用的是repackage。spring-boot-maven-plugin的repackage能夠?qū)vn package生成的軟件包,再次打包為可執(zhí)行的軟件包,并將mvn package生成的軟件包重命名為*original。
  • 這就為什么當(dāng)執(zhí)行maven clean package時(shí),spring-boot-maven-plugin會(huì)在target目錄下生成兩個(gè)jar文件
  • 其中我們可以將 springxxx-0.0.1-SNAPSHOTjar.original文件的后綴original去掉,生成的新jar包便是包含業(yè)務(wù)代碼的包(普通的jar包)。
  • 另外的spring-xxx-0.0.1-SNAPSHOTjar包則是在Spring Boot中通過(guò)jar -jar啟動(dòng)的包,它包含了應(yīng)用的依賴(lài),以及spring boot相關(guān)class。

2、idea中快速打包

當(dāng)然打包之前記得選擇自己生產(chǎn)環(huán)境配置文件

3、java –jar運(yùn)行項(xiàng)目

我們打開(kāi)剛才打包之后的所在的位置,確實(shí)有一個(gè)jar包

在當(dāng)前文件路徑直接使用cmd通過(guò)java –jar運(yùn)行項(xiàng)目

4、訪(fǎng)問(wèn)項(xiàng)目

http://localhost:8080/index

5、發(fā)布到服務(wù)器

發(fā)布之前服務(wù)器需要已經(jīng)安裝了jdk環(huán)境,數(shù)據(jù)庫(kù)(項(xiàng)目數(shù)據(jù)庫(kù)服務(wù)器如果是本服務(wù)器)

通過(guò)類(lèi)似xshell等上傳文件將上面的jar文件上傳到服務(wù)器某個(gè)文件夾下,在當(dāng)前路徑下運(yùn)行下面命令即可在后臺(tái)啟動(dòng)項(xiàng)目,其中hellword-0.0.1-SNAPSHOT.jar是我的項(xiàng)目

nohup java -jar hellword-0.0.1-SNAPSHOT.jar > hellword-0.0.1-SNAPSHOT.log  2>&1 &

補(bǔ)充:其他相關(guān)命令

nohup java -jar xxx.jar &

這樣執(zhí)行后,nohup會(huì)把執(zhí)行結(jié)果中的日志輸出到當(dāng)前文件夾下面的nohup.out文件中,通常情況下我們使用以上命令即可。 也可手動(dòng)指定一個(gè)參數(shù)來(lái)規(guī)定日志文件的輸出地點(diǎn)

nohup java -jar xxx.jar > catalina.out  2>&1 &

如果不需要輸出日志,可以使用如下命令

nohup java -jar xxx.jar >/dev/null &

為了方便管理,我們還可以通過(guò)Shell來(lái)編寫(xiě)一些用于啟動(dòng)應(yīng)用的腳本,比如關(guān)閉應(yīng)用的腳本:stop.sh

#!/bin/bash

PID=$(ps -ef | grep yourapp.jar | grep -v grep | awk '{ print $2 }')

if [ -z "$PID" ]

then

echo Application is already stopped

else

echo kill $PID

kill $PID

fi

啟動(dòng)應(yīng)用的腳本:start.sh

#!/bin/bash

nohup java -jar yourapp.jar --server.port=8888 &

整合了關(guān)閉和啟動(dòng)的腳本:run.sh,由于會(huì)先執(zhí)行關(guān)閉應(yīng)用,然后再啟動(dòng)應(yīng)用,這樣不會(huì)引起端口沖突等問(wèn)題,適合在持續(xù)集成系統(tǒng)中進(jìn)行反復(fù)調(diào)用。

#!/bin/bash

echo stop application

source stop.sh

echo start application

source start.sh

在Spring Boot的Maven插件中,還提供了構(gòu)建完整可執(zhí)行程序的功能,什么意思呢?

就是說(shuō),我們可以不用java -jar,而是直接運(yùn)行jar來(lái)執(zhí)行程序。

這樣我們就可以方便的將其創(chuàng)建成系統(tǒng)服務(wù)在后臺(tái)運(yùn)行了。

主要步驟如下:在pom.xml中添加Spring Boot的插件,并注意設(shè)置executable配置

<build>

      <plugins>

        <plugin>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-maven-plugin</artifactId>

          <configuration>

            <executable>true</executable>

          </configuration>

        </plugin>

      </plugins>

    </build>

在完成上述配置后,使用mvn install進(jìn)行打包,構(gòu)建一個(gè)可執(zhí)行的jar包,創(chuàng)建軟連接到/etc/init.d/目錄下

sudo ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp

在完成軟連接創(chuàng)建之后,我們就可以通過(guò)如下命令對(duì)yourapp.jar應(yīng)用來(lái)控制啟動(dòng)、停止、重啟操作了

/etc/init.d/yourapp start|stop|restart

二、war方式打包

傳統(tǒng)的部署方式:將項(xiàng)目打成war包,放入tomcat 的webapps目錄下面,啟動(dòng)tomcat,即可訪(fǎng)問(wèn)

1、修改pom

<packaging>jar</packaging>
修改為
<packaging>war</packaging>

2、pom文件添加如下依賴(lài)

<!--添加servlet-api的依賴(lài),用來(lái)打war包
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>

3、排除springboot內(nèi)置tomcat的干擾

4、啟動(dòng)類(lèi)改造

原有的啟動(dòng)類(lèi)都是基于jar的啟動(dòng)設(shè)置的,現(xiàn)在基于war的方式,需要我們改造下啟動(dòng)類(lèi)

如果是war包發(fā)布,需要增加SpringBootServletinitializer子類(lèi),并重寫(xiě)其configure方法、或者將main函數(shù)所在的類(lèi)繼承SpringBootServletlnitializer,并重寫(xiě)configure方法 

改造前

@SpringBootApplication
public class SpringboottestApplication {

	public static void main(String[] args) {

		SpringApplication.run(SpringboottestApplication.class, args);

	}
}

改造后

@SpringBootApplication
public class SpringboottestApplication extends SpringBootServletInitializer {

	public static void main(String[] args) {

		SpringApplication.run(SpringboottestApplication.class, args);

	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(SpringboottestApplication.class);
	}
}

當(dāng)然spring-boot-maven-plugin仍然需要的

然后執(zhí)行mvn clean 和mvn package即可打包war,將項(xiàng)目打成war包,放入tomcat 的webapps目錄下面,啟動(dòng)tomcat,即可訪(fǎng)問(wèn)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java網(wǎng)絡(luò)IO模型詳解(BIO、NIO、AIO)

    Java網(wǎng)絡(luò)IO模型詳解(BIO、NIO、AIO)

    Java支持BIO、NIO和AIO三種網(wǎng)絡(luò)IO模型,BIO是同步阻塞模型,適用于連接數(shù)較少的場(chǎng)景,NIO是同步非阻塞模型,適用于處理多個(gè)連接,支持自JDK1.4起,AIO是異步非阻塞模型,適用于異步操作多的場(chǎng)景,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • 使用原生JDBC動(dòng)態(tài)解析并獲取表格列名和數(shù)據(jù)的方法

    使用原生JDBC動(dòng)態(tài)解析并獲取表格列名和數(shù)據(jù)的方法

    這篇文章主要介紹了使用原生JDBC動(dòng)態(tài)解析并獲取表格列名和數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Java并發(fā)工具輔助類(lèi)代碼實(shí)例

    Java并發(fā)工具輔助類(lèi)代碼實(shí)例

    這篇文章主要介紹了Java并發(fā)工具輔助類(lèi)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java自定義異常類(lèi)詳解及示例說(shuō)明

    Java自定義異常類(lèi)詳解及示例說(shuō)明

    本文詳細(xì)講述了Java中自定義異常類(lèi)的原理、使用場(chǎng)景及創(chuàng)建方法,包括為何使用自定義異常、如何創(chuàng)建和實(shí)例化,以及文件處理、用戶(hù)認(rèn)證和業(yè)務(wù)邏輯中的應(yīng)用示例,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • idea?maven項(xiàng)目不支持發(fā)行版本問(wèn)題及解決過(guò)程

    idea?maven項(xiàng)目不支持發(fā)行版本問(wèn)題及解決過(guò)程

    這段描述主要講解了解決Maven項(xiàng)目中JDK版本問(wèn)題的方法,包括修改環(huán)境變量、配置IDEA編譯器版本以及調(diào)整pom.xml文件等內(nèi)容,通過(guò)這些步驟,可以有效解決項(xiàng)目運(yùn)行中的兼容性問(wèn)題
    2026-06-06
  • springboot 日志彩色消失的2種解決方案

    springboot 日志彩色消失的2種解決方案

    這篇文章主要介紹了springboot 日志彩色消失的2種解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • WebSocket+Vue+SpringBoot實(shí)現(xiàn)語(yǔ)音通話(huà)的使用示例

    WebSocket+Vue+SpringBoot實(shí)現(xiàn)語(yǔ)音通話(huà)的使用示例

    本文主要介紹了WebSocket+Vue+SpringBoot實(shí)現(xiàn)語(yǔ)音通話(huà)的使用示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法與應(yīng)用示例

    Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法與應(yīng)用示例

    這篇文章主要介紹了Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Java動(dòng)態(tài)數(shù)組的創(chuàng)建、添加、查找、打印等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • java使用Runtime.getRuntime().exec調(diào)用外部程序

    java使用Runtime.getRuntime().exec調(diào)用外部程序

    Runtime.getRuntime().exec一般用于調(diào)用外部可執(zhí)行程序或系統(tǒng)命令,并重定向外部程序的標(biāo)準(zhǔn)輸入,準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤到緩沖池,下面我們來(lái)看看Java如何使用它進(jìn)行調(diào)用外部程序吧
    2025-06-06
  • SpringBoot整合SpringCloud的過(guò)程詳解

    SpringBoot整合SpringCloud的過(guò)程詳解

    SpringCloud專(zhuān)注于為典型的用例和擴(kuò)展機(jī)制提供良好的開(kāi)箱即用體驗(yàn),在介紹SpringCloud默認(rèn)使用的注冊(cè)中心前,先給大家介紹下分布式系統(tǒng)的三個(gè)指標(biāo),具體內(nèi)容詳情跟隨小編一起看看吧
    2021-09-09

最新評(píng)論

株洲市| 湖北省| 玉环县| 泰来县| 太仓市| 新乡县| 灵寿县| 吐鲁番市| 迭部县| 星子县| 九龙县| 沙田区| 乐昌市| 汶川县| 拉孜县| 泊头市| 云阳县| 文山县| 唐山市| 信阳市| 维西| 凯里市| 山东省| 神池县| 旬邑县| 玉山县| 甘孜| 盘山县| 嵊州市| 阜康市| 包头市| 随州市| 剑河县| 乾安县| 哈巴河县| 隆化县| 定襄县| 天长市| 巨鹿县| 新津县| 金昌市|