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下載最新的B4.不用Release版本,在所有地方都用SNAPSHOT版本行不行?不行。正式環境中不得使用snapshot版本的庫。比如說,今天你依賴某個snapshot版本的第三方庫成功構建了自己的應用,明天再構建時可能就會失敗,因為今晚第三方可能已經更新了它的snapshot庫。你再次構建時,Maven會去遠端repository下載snapshot的最新版本,你構建時用的庫就是新的jar檔案了,這時正確性就很難保證了。
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下載最新的B4.不用Release版本,在所有地方都用SNAPSHOT版本行不行?不行。正式環境中不得使用snapshot版本的庫。比如說,今天你依賴某個snapshot版本的第三方庫成功構建了自己的應用,明天再構建時可能就會失敗,因為今晚第三方可能已經更新了它的snapshot庫。你再次構建時,Maven會去遠端repository下載snapshot的最新版本,你構建時用的庫就是新的jar檔案了,這時正確性就很難保證了。