聊聊開(kāi)源 IoT平臺(tái)ThingsBoard3.3.4源碼編譯問(wèn)題記錄
ThingsBoard 是一個(gè)基于Java的開(kāi)源的物聯(lián)網(wǎng)平臺(tái),用于數(shù)據(jù)收集、處理、可視化和設(shè)備管理。它使用物聯(lián)網(wǎng)行業(yè)的標(biāo)準(zhǔn)協(xié)議(MQTT、CoAP和HTTP)實(shí)現(xiàn)設(shè)備連接,并支持云和本地部署。因?yàn)槭诸^有項(xiàng)目用這個(gè)開(kāi)源產(chǎn)品當(dāng)作物聯(lián)網(wǎng)數(shù)據(jù)采集傳輸代平臺(tái),用來(lái)代替以前公司自己開(kāi)發(fā)的的數(shù)據(jù)采集傳輸軟件(不穩(wěn)定)。根據(jù)近兩年來(lái)的項(xiàng)目實(shí)際使用經(jīng)驗(yàn),ThingsBoard是一款很優(yōu)秀的產(chǎn)品,其高連接性,可靠性,穩(wěn)定性,可伸縮性,可擴(kuò)展性等指標(biāo)都可以秒殺我們公司自研的基于c++的那套系統(tǒng)。
最近ThingsBoard相關(guān)項(xiàng)目部署在某央企云平臺(tái)上,該云平臺(tái)安全機(jī)制實(shí)時(shí)檢查軟件漏洞,發(fā)現(xiàn)漏洞限期整改,否則關(guān)停服務(wù)器。ThingsBoard源碼中引用300多個(gè)第三方j(luò)ar包,經(jīng)常會(huì)有組件出現(xiàn)漏洞,靠等待官方升級(jí)根本來(lái)不及。只能自己靠自己源代碼編譯打包發(fā)布,編譯源碼一大堆的坑,把遇到的問(wèn)題總結(jié)記錄下來(lái)供大家參考。
1、Maven配置問(wèn)題
因?yàn)門(mén)hingsBoard在編譯過(guò)程中需要依賴很多國(guó)外的包,那么需要外網(wǎng)才能連接,建議連接到外網(wǎng)。如果公司設(shè)置內(nèi)有代理服務(wù)器,別忘了setting.xml配置代理訪問(wèn)。
一般情況下,使用官方鏡像更新依賴包,網(wǎng)速不穩(wěn)定,可將Maven鏡像源設(shè)置為淘寶的,在maven安裝包目錄下找到settings.xml設(shè)置,如下:
建議同時(shí)把npm也設(shè)置為淘寶鏡像。
同上,網(wǎng)速不好npm過(guò)程中也會(huì)下載失敗,這是導(dǎo)致很多人編譯失敗的原因,所以我們?cè)谶M(jìn)行編譯之前,也將npm替換為淘寶鏡像:
編譯時(shí)把系統(tǒng)代理服務(wù)器設(shè)置或IE代理服務(wù)器設(shè)置中的代理設(shè)置取消,經(jīng)常導(dǎo)致 ThingsBoard Server UI模塊編譯失敗。
2、緩存、或進(jìn)程未關(guān)閉、或文件被占用導(dǎo)致編譯出錯(cuò)
每次編譯失敗進(jìn)行二次編譯時(shí),要清理緩存,并殺死遺留進(jìn)程
執(zhí)行下面命令,殺死遺留進(jìn)程
taskkill /f /im java.exe
或者IDEA Maven工具進(jìn)行清理。
在項(xiàng)目編譯過(guò)程中要copy文件,如果node進(jìn)程或其它進(jìn)程沒(méi)有關(guān)閉,也會(huì)報(bào)各種類(lèi)型的錯(cuò)誤信息。進(jìn)入報(bào)錯(cuò)的模塊,單獨(dú)編譯,添加參數(shù) -X或-e 查詢出錯(cuò)的具體信息,根據(jù)錯(cuò)誤提示進(jìn)行處理。
最簡(jiǎn)單的方式就是重啟電腦,建議重啟。
3、軟件版本問(wèn)題,這是最常見(jiàn)的問(wèn)題
Java版本,JDK版本必須11以上版本,我用的版本是11.0.18,最開(kāi)始用的JDK11_4335520這個(gè)版本編譯時(shí)發(fā)現(xiàn)各種錯(cuò)誤。
再就是Node版本,我用的v16.15.1,NPM版本號(hào),8.5.0
最后時(shí)yarn版本,v1.22.9。
node和yarn版本最好跟模塊pom文件設(shè)置版本中保持一致。
注意:
編譯項(xiàng)目跟網(wǎng)速和電腦配置有關(guān),最好連接上外網(wǎng)進(jìn)行編譯,我這里完整編譯大概需要20多分鐘。
總結(jié)
在編譯Thingsboard 3.3.4過(guò)程中遇到了各式各樣的問(wèn)題,編譯過(guò)程很慢,50多個(gè)模塊花費(fèi)了幾乎一整天的時(shí)間才編譯成功,在此總結(jié)一下,也希望能幫助到更多朋友。