相信不少同窗有這樣的需求,如今不少公司都有多地的研發中心,常常須要跨地區部署,好比,博主人在成都,可是服務器是北京的。通常城市間網絡都不怎麼好,上傳一個幾十兆的jar包那是真的慢,別說如今微服務架構下,動輒兩位數的fat jar。這裏說的jar,就是spring boot項目打出來的fat jar類型,通常也有個幾十兆吧。html
博主以前還遇到部署北美亞馬遜環境,好不容易傳個包過去,後來發現有bug,須要改class,若是從新打包再傳,真的要死的心都有了。spring
若是要改什麼配置,或者發現某個class文件有bug,那怎麼辦呢?不要急,今天就是教你怎麼解決這種簡單問題。vim
這個很是簡單,只要使用vim便可,真正的屠龍工具。服務器
好比當前目錄下有個spring boot 的jar包,咱們能夠按以下步驟:網絡
如上圖所示,咱們直接vim xxx.jar包後,能夠經過 /關鍵字 來查找文件,查找到之後,經過方向鍵進行控制,enter 進入文件,修改文件、保存等操做和vim的操做同樣。架構
若是隻是簡單地替換文件,能夠直接使用 如下命令:maven
jar uvf pas-server.jar com/ceiec/pas/server/service/impl/IncidentServiceImpl
我是不推薦該命令的,由於很麻煩,要本身去新建一級一級的目錄,並且通常class文件的包名都是以 . 來分隔的,還要手動修改成文件分隔符。其次,若是輸錯了路徑,再想刪掉這個class就麻煩了。ide
細分爲如下幾個步驟:微服務
cp pas-server.jar pas-server.zip工具
unzip pas-server.zip -d pas-server-unzip/
解壓後的spring boot包的結構以下,class自行修改便可(在BOOT-INF下面),我通常rz上傳後,直接覆蓋:
jar -cvfM0 pas-server.jar BOOT-INF/ META-INF/ org/
結果以下:
能夠看到,在pas-server.jar後,咱們指定了多個目錄,這幾個目錄便是spring boot 的那幾個目錄。
上述 jar 命令中相關的參數以下:
博主前幾天隨便記錄的,和這個主題有點關係,比較適用於netty工程:
普通的maven項目,如何打成一個fat jar(包括了所有依賴jar包)?
今天這篇我的感受不算豐滿,但感受沒太多好寫的,不像理論知識那些。不過這個仍是蠻重要的,能解決開發中的實際問題,提高你們的效率吧。