Maven 的 Snapshot 版本與 Release 版本
1、Snapshot 版本代表不穩(wěn)定、尚處于開發(fā)中的版本。
2、Release 版本則代表穩(wěn)定的版本。
3、什么情況下該用 SNAPSHOT?
協(xié)同開發(fā)時(shí),如果 A 依賴構(gòu)件 B,由于 B 會(huì)更新,B 應(yīng)該使用 SNAPSHOT 來標(biāo)識(shí)自己。這種做法的必要性可以反證如下:
a. 如果 B 不用 SNAPSHOT,而是每次更新后都使用一個(gè)穩(wěn)定的版本,那版本號(hào)就會(huì)升得太快,每天一升甚至每個(gè)小時(shí)一升,這就是對(duì)版本號(hào)的濫用。
b.如果 B 不用 SNAPSHOT, 但一直使用一個(gè)單一的 Release 版本號(hào),那當(dāng) B 更新后,A 可能并不會(huì)接受到更新。因?yàn)?A 所使用的 repository 一般不會(huì)頻繁更新 release 版本的緩存(即本地 repository),所以B以不換版本號(hào)的方式更新后,A在拿B時(shí)發(fā)現(xiàn)本地已有這個(gè)版本,就不會(huì)去遠(yuǎn)程Repository下載最新的 B
4、 不用 Release 版本,在所有地方都用 SNAPSHOT 版本行不行?
不行。正式環(huán)境中不得使用 snapshot 版本的庫。 比如說,今天你依賴某個(gè) snapshot 版本的第三方庫成功構(gòu)建了自己的應(yīng)用,明天再構(gòu)建時(shí)可能就會(huì)失敗,因?yàn)榻裢淼谌娇赡芤呀?jīng)更新了它的 snapshot 庫。你再次構(gòu)建時(shí),Maven 會(huì)去遠(yuǎn)程 repository 下載 snapshot 的最新版本,你構(gòu)建時(shí)用的庫就是新的 jar 文件了,這時(shí)正確性就很難保證了。