前言
目前接觸的項目結構主要有單體項目和多模塊項目,且這些項目是部署在網(wǎng)絡環(huán)境一般的服務器上,隨著項目規(guī)模變大,單個jar的體積動輒就上百MB,每一次代碼小改動不可能都上傳整個jar,每次代碼改動后可能就是把編譯后的class文件在服務器上做一個替換,或者直接使用arthas臨時更改代碼邏輯,但在我所處的環(huán)境下并不建議使用arthas(其修改的代碼只在當此運行時才生效,因為登錄這個服務器做其他工作的人員比較多,不排除會重啟該程序,如果重啟后原來改動隨即失效)。下面簡單介紹一下單體架構和多模塊架構補丁部署時注意事項(僅供參考)。
單體
使用maven打包后在target中生成jar包文件,使用壓縮包打開后可以看到這樣的目錄結構
單體結構下目錄簡單明了,替換的class文件直接在cn目錄進去找到,目錄下都是class文件然后替換即可。替換mapper或者其他配置文件也是如此。
特別注意:如果你添加依賴,并把依賴的jar放到lib下,你的jar不能被壓縮,否則會出現(xiàn)以下情況
這里看到我添加進去的jar已經(jīng)被壓縮了,添加前后大小不一致。啟動后
報java.lang.IllegalStateException: Unable to open nested entry ‘BOOT-INF/lib/hutool-all-5.8.18.jar’. It has been compressed and nested jar files must be stored without compression. Please check the mechanism used to create your executable jar file這樣一個錯誤。其原因就是jar被壓縮了。
怎么解決?
我電腦上安裝的壓縮軟件是Bandizip,點擊添加、更多選項、在壓縮級別選擇僅存儲。(如果你使用的rar或者其他壓縮軟件,可以自行搜索相應方法)
添加進去后可以看到壓縮前后大小一致,測試啟動正常。
多模塊
這里首先介紹以下多模塊jar包結構,其classes目錄下只有start模塊下的啟動類
原因我們可以在start模塊的pom文件中看到,其他模塊都是作為start模塊的依賴來引入的,那么依賴一定都是在lib目錄下。
很快嗷,在lib目錄下找到了這些模塊
隨便打開其中一個就可看到其中熟悉的目錄,以及被編譯后的class文件。
在多模塊下,如果修改了某處地方,可以將修改的那個模塊打包上傳然后替換,當然務必記住jar不能壓縮,否則啟動后也會報上述單體項目一樣的錯誤。其解決方式和單體的添加依賴jar包一致,可以看上面。
jar為什么不能壓縮
jar包在經(jīng)過手動解壓縮和壓縮后可能會出現(xiàn)無法運行的問題,這可能并非代碼本身的問題,而是與壓縮方式有關。當jar包的大小發(fā)生變化時,可能會導致文件內(nèi)容或結構的改變,從而影響到jar包的運行。文章來源:http://www.zghlxwxcb.cn/news/detail-812731.html
其他解決方式
參考:https://www.cnblogs.com/dayou123123/p/6845432.html文章來源地址http://www.zghlxwxcb.cn/news/detail-812731.html
到了這里,關于單體項目和多模塊項目jar包補丁部署注意事項的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!