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

Springboot實現(xiàn)打包部署項目全過程

 更新時間:2026年03月17日 08:46:46   作者:程序員一博  
本文介紹了如何使用Spring Boot Maven插件將項目打包成可運行的JAR包,并提供了在IDEA中快速打包、使用`java -jar`運行項目、發(fā)布到服務器以及創(chuà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使用這個插件可以將項目打包成一個可運行的jar,無需在目標服務器安裝tomcat等

spring-boot-maven-plugin項目存在于spring-boot-tools 目錄中spring-boot-maven-plugin默認 有5 個goals; repackage、 run、start、stop、 build-info

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

2、idea中快速打包

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

3、java –jar運行項目

我們打開剛才打包之后的所在的位置,確實有一個jar包

在當前文件路徑直接使用cmd通過java –jar運行項目

4、訪問項目

http://localhost:8080/index

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

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

通過類似xshell等上傳文件將上面的jar文件上傳到服務器某個文件夾下,在當前路徑下運行下面命令即可在后臺啟動項目,其中hellword-0.0.1-SNAPSHOT.jar是我的項目

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

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

nohup java -jar xxx.jar &

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

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

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

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

為了方便管理,我們還可以通過Shell來編寫一些用于啟動應用的腳本,比如關(guān)閉應用的腳本: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

啟動應用的腳本:start.sh

#!/bin/bash

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

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

#!/bin/bash

echo stop application

source stop.sh

echo start application

source start.sh

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

就是說,我們可以不用java -jar,而是直接運行jar來執(zhí)行程序。

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

主要步驟如下:在pom.xml中添加Spring Boot的插件,并注意設置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進行打包,構(gòu)建一個可執(zhí)行的jar包,創(chuàng)建軟連接到/etc/init.d/目錄下

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

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

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

二、war方式打包

傳統(tǒng)的部署方式:將項目打成war包,放入tomcat 的webapps目錄下面,啟動tomcat,即可訪問

1、修改pom

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

2、pom文件添加如下依賴

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

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

4、啟動類改造

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

如果是war包發(fā)布,需要增加SpringBootServletinitializer子類,并重寫其configure方法、或者將main函數(shù)所在的類繼承SpringBootServletlnitializer,并重寫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);
	}
}

當然spring-boot-maven-plugin仍然需要的

然后執(zhí)行mvn clean 和mvn package即可打包war,將項目打成war包,放入tomcat 的webapps目錄下面,啟動tomcat,即可訪問

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    Java并發(fā)工具輔助類代碼實例

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

    Java自定義異常類詳解及示例說明

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

    idea?maven項目不支持發(fā)行版本問題及解決過程

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

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

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

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

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

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

    這篇文章主要介紹了Java動態(tài)數(shù)組添加數(shù)據(jù)的方法,結(jié)合實例形式詳細分析了Java動態(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)命令,并重定向外部程序的標準輸入,準輸出和標準錯誤到緩沖池,下面我們來看看Java如何使用它進行調(diào)用外部程序吧
    2025-06-06
  • SpringBoot整合SpringCloud的過程詳解

    SpringBoot整合SpringCloud的過程詳解

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

最新評論

固阳县| 平遥县| 且末县| 定陶县| 常德市| 延吉市| 托克托县| 固始县| 涟水县| 丰宁| 包头市| 花莲县| 吴川市| 原平市| 万源市| 茶陵县| 财经| 兰考县| 体育| 大关县| 正镶白旗| 璧山县| 阿尔山市| 北川| 龙川县| 邵阳县| 汶川县| 黄龙县| 昌江| 佛学| 德兴市| 哈密市| 康马县| 娱乐| 布尔津县| 康平县| 佛学| 金昌市| 南雄市| 桦川县| 孟连|