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