曹工雜談:Linux服務器上,Spring Boot 原地修改 jar 包配置文件/替換class文件,免去重複上傳的麻煩

1、前言

相信不少同窗有這樣的需求,如今不少公司都有多地的研發中心,常常須要跨地區部署,好比,博主人在成都,可是服務器是北京的。通常城市間網絡都不怎麼好,上傳一個幾十兆的jar包那是真的慢,別說如今微服務架構下,動輒兩位數的fat jar。這裏說的jar,就是spring boot項目打出來的fat jar類型,通常也有個幾十兆吧。html

博主以前還遇到部署北美亞馬遜環境,好不容易傳個包過去,後來發現有bug,須要改class,若是從新打包再傳,真的要死的心都有了。spring

若是要改什麼配置,或者發現某個class文件有bug,那怎麼辦呢?不要急,今天就是教你怎麼解決這種簡單問題。vim

 

2、修改配置文件

這個很是簡單,只要使用vim便可,真正的屠龍工具。服務器

好比當前目錄下有個spring boot 的jar包,咱們能夠按以下步驟:網絡

 

如上圖所示,咱們直接vim xxx.jar包後,能夠經過 /關鍵字 來查找文件,查找到之後,經過方向鍵進行控制,enter 進入文件,修改文件、保存等操做和vim的操做同樣。架構

 

3、修改jar包中的class

一、方式1,jar命令替換

若是隻是簡單地替換文件,能夠直接使用 如下命令:maven

jar uvf pas-server.jar com/ceiec/pas/server/service/impl/IncidentServiceImpl

 

我是不推薦該命令的,由於很麻煩,要本身去新建一級一級的目錄,並且通常class文件的包名都是以 . 來分隔的,還要手動修改成文件分隔符。其次,若是輸錯了路徑,再想刪掉這個class就麻煩了。ide

 

二、方式2,解壓後再壓縮的方式(極力推薦)

細分爲如下幾個步驟:微服務

一、拷貝jar包爲一個zip文件

 

cp pas-server.jar pas-server.zip工具

 

二、解壓zip到指定文件夾

 

unzip pas-server.zip -d pas-server-unzip/

 

三、進入解壓後的文件夾,修改文件

解壓後的spring boot包的結構以下,class自行修改便可(在BOOT-INF下面),我通常rz上傳後,直接覆蓋:

 

四、從新打爲spring boot 的fat包

jar -cvfM0 pas-server.jar BOOT-INF/ META-INF/ org/

 結果以下:

 

能夠看到,在pas-server.jar後,咱們指定了多個目錄,這幾個目錄便是spring boot 的那幾個目錄。

 

上述 jar 命令中相關的參數以下:

 

4、普通非spring boot工程如何打包爲fat jar

博主前幾天隨便記錄的,和這個主題有點關係,比較適用於netty工程:

普通的maven項目,如何打成一個fat jar(包括了所有依賴jar包)?

 

 

5、總結

今天這篇我的感受不算豐滿,但感受沒太多好寫的,不像理論知識那些。不過這個仍是蠻重要的,能解決開發中的實際問題,提高你們的效率吧。

相關文章
相關標籤/搜索