任人欺淩小師妹 參考文章

Maven 的 Snapshot 版本與 Release 版本

1、Snapshot 版本代表不穩定、尚處於開發中的版本。

2、Release 版本則代表穩定的版本。

3、什麼情況下該用 SNAPSHOT?

協同開發時,如果 A 依賴構件 B,由於 B 會更新,B 應該使用 SNAPSHOT 來標識自己。這種做法的必要性可以反證如下:

  • a. 如果 B 不用 SNAPSHOT,而是每次更新後都使用一個穩定的版本,那版本號就會升得太快,每天一升甚至每個小時一升,這就是對版本號的濫用。
  • b.如果 B 不用 SNAPSHOT, 但一直使用一個單一的 Release 版本號,那當 B 更新後,A 可能並不會接受到更新。因為 A 所使用的 repository 一般不會頻繁更新 release 版本的緩存(即本地 repository),所以B以不換版本號的方式更新後,A在拿B時發現本地已有這個版本,就不會去遠程Repository下載最新的 B

4、 不用 Release 版本,在所有地方都用 SNAPSHOT 版本行不行?     

不行。正式環境中不得使用 snapshot 版本的庫。 比如說,今天你依賴某個 snapshot 版本的第三方庫成功構建了自己的應用,明天再構建時可能就會失敗,因為今晚第三方可能已經更新了它的 snapshot 庫。你再次構建時,Maven 會去遠程 repository 下載 snapshot 的最新版本,你構建時用的庫就是新的 jar 文件了,這時正確性就很難保證了。