SpringBoot簡單打包部署(附工程)

solution發表於2021-09-09

前言

本文主要介紹SpringBoot的一些打包事項和專案部署以及在其中遇到一些問題的解決方案。

SpringBoot打包

在SpringBoot打包這塊,我們就用之前的一個web專案來進行打包。
首先需要明確的是,該專案打包的形態是可執行的jar包,還是在tomcat下執行的war包。
雖然本專案是用maven構建的,用maven打包也更加方便,但是這裡也說明普通非maven打包的專案如何打包。

Maven打包

首先是maven方式打包:
如果是jar
需在pom.xml指定打成的包為:

jar

如果是war包。
需在pom.xml指定打成的包為:

war

並透過標籤在打包的時候排除tomcat依賴


    org.springframework.boot
    spring-boot-starter-tomcat
    provided

然後新增SpringBoot自帶的打包方式
示例如下:


        compile
        src
        springboot-package
        
            
                org.springframework.boot
                spring-boot-maven-plugin 
                
                    true
                    com.pancm.App
                
                
                    
                        
                            repackage
                        
                    
                
            
        
    

注:標籤是指定打包之後的名稱,是指定main函式。

也可以不用SpringBoot自帶的打包方式,使用mavenassembly外掛進行打包。
示例如下:


    
          
            org.apache.maven.plugins  
            maven-assembly-plugin  
            2.5.5  
            
                  
                      
                        com.pancm.App  
                      
                  
                  
                    jar-with-dependencies  
                  
              
         
       
    

pom.xml中新增完相應的標籤之後,我們只需在專案同級(pom.xml同級)輸入

mvn clean package

即可完成打包
如果想排除測試程式碼,則可以輸入:

mvn clean package  -Dmaven.test.skip=true

來進行打包。

一般我們是把application.propertieslogback.xml檔案放在resources資料夾中,但是進行打包之後,它們也會包含在jarwar包中,如果我們想更改配置,則會比較麻煩。
如果想將它們和專案放在同級目錄下,application.properties可以直接移出和專案同級的目錄下,因為Spring程式會按優先順序從下面這些路徑來載入application.properties配置檔案:

  • 當前目錄下的/config目錄

  • 當前目錄

  • classpath裡的/config目錄

  • classpath 根目錄

springboot預設載入的logback是在classpath目錄下,這時我們只需要在application.properties配置檔案指定logback.xml的路徑即可。
新增如下:

logging.config=logback.xml

如果引入了第三方的jar包,但是又無法透過maven私服進行下載,這時可以手動進行編譯。
例如,我寫了一個工具類為Mytools,然後把它打成了一個jar包,然後放在我的這個專案中lib目錄下,並且需要引用它,那麼此時便可以對該jar包進行編譯到本地倉庫中,然後再pom.xml新增相應的名稱和版本號。
命令示例:

mvn install:install-file -Dfile=lib/pancmtools.jar -DgroupId=com.panncm.utils -DartifactId=pancm-utils -Dversion=1.0 -Dpackaging=jar

pom.xml新增


            com.panncm.utils
            pancm-utils
            1.0

便可以進行打包了。

普通專案打包

如果是普通的專案,沒有使用maven構建的話,可以使用eclipse等工具進行打包。
如果是jar
首先在eclipse中執行該專案(main方法執行),然後在eclipse中右鍵專案 export ->java -> runnable jar file-> package required libraries into generated jar 指定main方法,然後選擇打包的名稱以及打包的路徑。點選finish完成打包。

如果是war
eclipse中右鍵專案 export ->web -> war file,然後選擇打包的名稱以及打包的路徑。點選finish完成打包。

Ant打包

介紹了上述兩種打包之後,這裡介紹下透過ant方法進行打包(需要安裝ant環境,安裝方式基本和maven一致,指定路徑,配置環境變數,這裡就不在過多講述了)。
一般打包之後,我們需要將包和配置檔案放在一個目錄下,這時我們又不想手動進行復制貼上的話,就可以用ant來進行打包,將打包的檔案整合在一起。
這裡我們就編寫一個build.xml的配置檔案。


    
    
    
        
        
    

    
        
    

    
        
            
        
        
            
        
    

    
         
        
        
        
    

注:是指定檔案存放的資料夾,executable是使用cmd命令,line是執行的語句, 標籤是將檔案複製到指定的資料夾中。

然後再新建一個 build.bat檔案,裡面只需要填寫 ant就行了。
準備完之後,只需雙擊build.bat,專案和配置檔案就自動到build檔案中了,省去了很多操作。

雖然現在流行透過jenkins進行打包部署,不過使用ant加maven進行打包也不錯的,比較簡單。

打包遇到的一些問題

問題:source-1.5 中不支援 diamond運算子

解決辦法一:
在properties新增
1.81.8

  
    UTF-8
    UTF-8
    1.8
    1.2.41
    1.8
    1.8
  

解決方案二:
在plugin中新增 1.8<source>1.8

  
          
              
                org.apache.maven.plugins  
                maven-compiler-plugin  
                3.3  
                  
                    1.8<source>  
                    1.8  
                  
              
          
    

問題二:打包出現某jar包無法打入

實際是可以下載,但是無法將此打入包中

解決辦法:
pom.xml中新增

    
       
            spring-milestone  
              
       
   

問題三:mvn clean 失敗,出現Failed to execute goal

原因: 在clean的時候,target裡面的檔案被佔用了。
解決辦法: 不佔用就行了。

SpringBoot部署

如果是jar專案
Windows系統在專案同級目錄下輸入:

java -jar springboot-package

即可啟動專案。
關閉專案,只需關掉dos介面就可以了。
也可以寫一個bat檔案進行執行。
示例:

@echo off
title "springboot-package"java -jar springboot-package.jar

Linux系統在專案同級目錄下輸入:

nohup -jar springboot-package &

即可啟動。
關閉輸入:

kill -9 pid(jar的程式id)

也可以在init.d註冊一個服務
示例:

ln -s /home/jars/app/springboot-package.jar /etc/init.d/springboot-packagechmod +x /etc/init.d/springboot-package

然後輸入:

service springboot-package start|stop|restart

進行啟動或者停止。
當然也可以編寫xshell指令碼進行啟動和關閉。
示例:

#!/bin/bashAPPDIR=`pwd`
PIDFILE=$APPDIR/springboot-package.pidif [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); thenecho "springboot-package is already running..."exit 1finohup java -jar $APPDIR/springboot-package.jar >/dev/null 2>&1 &echo $! > $PIDFILEecho "start springboot-package..."

如果是war專案
war放在tomcat/webapp目錄下,然後啟動tomcat就可以了。Windows系統 在tomcat/bin目錄下雙擊startup.bat即可啟動,雙擊shutdown.bat關閉。
Linux系統則在tomcat/bin 目錄下輸入startup.sh即可啟動, 輸入shutdown.sh關閉。

其它

關於SpringBoot打包部署就講解到這裡了,如有不妥,歡迎指正!
SpringBoot打包部署的專案工程地址:

原文出處:https://www.cnblogs.com/xuwujing/p/9471802.html

  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2459/viewspace-2814096/,如需轉載,請註明出處,否則將追究法律責任。

相關文章