在 Maven 中,Release 和 Snapshot 是兩種不同的版本類型
Release 版本
- 穩定性:Release 版本被認為是穩定的、可靠的版本。
- 不可變性:一旦發布,Release 版本的內容不應該被更改。
- 版本號:通常使用固定的版本號,如 1.0.0、2.1.3 等。
- 用途:適合用於生產環境或正式發布。
Snapshot 版本
- 開發中:Snapshot 版本代表開發中的版本,可能不穩定。
- 可變性:Snapshot 版本的內容可能會隨時變化。
- 版本號:通常在版本號後加上 -SNAPSHOT,如 1.0.0-SNAPSHOT,且必需是大寫,加在版本別後面,用 ”-”分隔。
- 用途:主要用於開發和測試階段。
更新機制
- Release:Maven 在本地是進行快取的,如果使用的是 release 版本的話,一旦套件被下載到本地端,Maven就不會再重新下載的。如果需要重新下載的話,就必需要手動刪除本地中的快取。
- Snapshot:SNAPSHOT 版本的話,每次在建置的時候都會從定義的新倉庫下載新的版本,
更進一步講Snapshot:
假設有兩個元件:order-service 和 customer-ui,其中 customer-ui 專案依賴 order-service。
這兩個專案每天都會建置多次,如果每次建置都要升級 order-service 的版本,你可能會感到困擾。這時候 SNAPSHOT 版本就派上用場了。
在日常建置時,你可以建立 order-service 的快照版本,例如 order-service-1.0-SNAPSHOT.jar,而 customer-ui 則依賴這個快照版本。
每次 customer-ui 建置時,它會優先檢查遠端倉庫是否有最新的 order-service-1.0-SNAPSHOT.jar。如果有,就會下載並使用。
即使本地倉庫中已有 order-service-1.0-SNAPSHOT.jar,它仍會檢查遠端倉庫中同名的 jar 檔是否為最新版本。
在Maven的repository配置中,<updatePolicy>標籤用於指定如何更新SNAPSHOT依賴。以下是常見的選項:
- always:每次建構時都檢查更新
- daily:每天檢查一次更新(預設值)
- interval:X:每X分鐘檢查一次更新
- never:從不檢查更新
所以,您可以根據需求將XXX替換為上述選項之一。例如,如果您希望每次建構時都檢查更新,可以這樣設置:
<repository>
<id>myRepository</id>
<url>...</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
這個設置與您提供的上下文中關於SNAPSHOT版本的描述相符,即每次建置時都會檢查是否有最新版本。
選擇使用 Release 還是 Snapshot 版本取決於項目的階段和需求。在開發過程中使用 Snapshot 版本可以方便地獲取最新的變更,而在正式環境中則應該使用穩定的 Release 版本。
On this day..
- 幸福的感覺 ~ 1 - 2006
« [末!四代森林人] 升級鋁圈 RAYS VOLKRACING TRINITI V [網站可靠性工程] SRE 核心實務:持續進步的系統及組織文化 »


нарколог дом нарколог дом
If some one wants to be updated with latest technologies after that he must be go to see this web site and be up to date all the time.
If you are going for best contents like I do, only pay a quick visit this site everyday as it offers feature contents, thanks