平時(shí)我們見(jiàn)到的軟件,特別是面向開(kāi)發(fā)者的軟件或者開(kāi)源框架等某残,都會(huì)以一個(gè)英文縮寫(xiě)來(lái)標(biāo)識(shí)當(dāng)前版本的級(jí)別窘茁,所以我們應(yīng)當(dāng)根據(jù)使用軟件的具體需求場(chǎng)景來(lái)對(duì)這些版本進(jìn)行選擇妈嘹。
- Alpha:是內(nèi)部測(cè)試版,一般不向外部發(fā)布,會(huì)有很多Bug.一般只有測(cè)試人員使用背犯。
- Beta:也是測(cè)試版坏瘩,這個(gè)階段的版本會(huì)一直加入新的功能。在Alpha版之后推出漠魏。
- RC:(Release Candidate) 顧名思義倔矾, 用在軟件上就是候選版本。系統(tǒng)平臺(tái)上就是發(fā)行候選版本柱锹。RC 版不會(huì)再加入新的功能了哪自,主要著重于修復(fù)測(cè)試中發(fā)現(xiàn)的缺陷。
- GA : General Availability禁熏,正式發(fā)布的版本壤巷,國(guó)外通常用 GA 來(lái)標(biāo)識(shí) release 版本,GA 版本是開(kāi)發(fā)團(tuán)隊(duì)認(rèn)為該版本是穩(wěn)定版(有的軟件可能會(huì)標(biāo)識(shí)為 Stable 版本或者 Production 版本瞧毙,其意思和 GA 相同)胧华,可以在較為關(guān)鍵的場(chǎng)合使用,比如生產(chǎn)環(huán)境升筏。
所以撑柔,如果對(duì)軟件的穩(wěn)定性要求極高瘸爽,但是對(duì)實(shí)時(shí)添加的新特性沒(méi)有需求的話您访,GA 版本就是最合適的選擇了。
在使用 maven 過(guò)程中剪决,我們?cè)陂_(kāi)發(fā)階段經(jīng)常性的會(huì)有很多公共庫(kù)處于不穩(wěn)定狀態(tài)灵汪,隨時(shí)需要修改并發(fā)布,可能一天就要發(fā)布一次柑潦,遇到bug時(shí)享言,甚至一天要發(fā)布N次。maven 的依賴管理是基于版本管理的渗鬼,對(duì)于發(fā)布狀態(tài)的 artifact览露,如果版本號(hào)相同,即使我們內(nèi)部的鏡像服務(wù)器上的組件比本地新譬胎,maven也不會(huì)主動(dòng)下載的差牛。如果我們?cè)陂_(kāi)發(fā)階段都是基于正式發(fā)布版本來(lái)做依賴管理命锄,那么遇到這個(gè)問(wèn)題,就需要升級(jí)組件的版本號(hào)偏化,可這樣就明顯不符合要求和實(shí)際情況了脐恩。但是,如果是基于快照版本侦讨,那么問(wèn)題就自熱而然的解決了驶冒,maven 總會(huì)選擇“最新”一個(gè)快照來(lái)使用。
有的團(tuán)隊(duì)會(huì)選擇直接在線上使用 SNAPSHOT 版本的韵卤,這樣對(duì)于變更直接生效骗污,很方便。但是這樣也會(huì)有很大的潛在風(fēng)險(xiǎn)沈条,生產(chǎn)環(huán)境中更是不能允許這樣的風(fēng)險(xiǎn)存在身堡。例如:A 軟件依賴于B 軟件的 3.2.1-SNAPSHOT 版本,B 軟件的團(tuán)隊(duì)對(duì)一個(gè) A 使用的功能實(shí)現(xiàn)進(jìn)行了調(diào)整拍鲤,但并沒(méi)有考慮到適配之前的版本贴谎,然后直接發(fā)布到倉(cāng)庫(kù),這時(shí) A 要么會(huì)構(gòu)建失敗季稳,要么會(huì)在運(yùn)行時(shí)產(chǎn)生異常擅这,然而 A 團(tuán)隊(duì)也許很久才會(huì)發(fā)現(xiàn)是 B 軟件的一次小小變更導(dǎo)致的問(wèn)題。
不穩(wěn)定的依賴會(huì)直接導(dǎo)致系統(tǒng)的不穩(wěn)定景鼠,所以應(yīng)當(dāng)在生產(chǎn)環(huán)境中盡量使用 RELEASE 版本的依賴仲翎,這樣能規(guī)避很多不必要的風(fēng)險(xiǎn)。
個(gè)人博客同步更新铛漓,獲取更多技術(shù)分享請(qǐng)關(guān)注:鄭保樂(lè)的博客