私服release庫和snapshot庫的區別

小明:「新需求開發完了,立刻要上線,先在j-one中打個包測試一下吧~!「web

編譯完成後,部署測試環境,「納尼!測試環境起不來了,我開發環境正常啊!什麼狀況!!!」tomcat

因而小明開始查找問題:maven

回查代碼,沒問題;測試

tomcat、jdk等環境配置,沒問題;調試

找到了, 「XXXX-1.0-SNAPSHOT.jar」包怎麼變大了???xml

爲何包會變大呢?原來是snapshot包的特徵:容許隨時同版本更新jar!!!私服中jar包提供方更新了jar,小明從新引用後,可能由於代碼內容變化引發的問題。這種狀況輕則編譯通不過,測試環境啓動有問題,重則引發線上事故!正式發佈上線的代碼要依賴release版本包保證穩定!接口

因此私服release庫和snapshot庫的正確使用方式是什麼,下面將詳細給你們介紹:開發

1.     release庫(發佈庫)使用規則及場景:部署

release庫是存放穩定版本包的倉庫,線上發佈的程序都應從release庫中引用正確版本進行使用源碼

release庫倉庫名中帶有「releases」標識,包括libs-releases-local,plugins-releases-local兩個倉庫。私服中release庫使用規則以下:

a) release庫不容許刪除jar;

b) release庫不容許同版本更新jar包(即同一個版本jar包只存在一個);

c) release庫上傳的jar包版本號(version)不能以「-SNAPSHOT」結束(版本號中的SNAPSHOT是release版和snapshot版區別的惟一標識);

d) 第三方包(非公司內部開發)僅可引用release版

e) 如可能,請提供接口對應源碼,方便引用方使用。

release庫使用場景:

根據上述release庫的使用規則可知,若在開發過程當中引用的不是release版的庫,頗有可能由於jar包更新後引用方不知道而引發代碼錯誤,因此在以下場景場景中,請使用release倉庫:

上傳/發佈:①當代碼構建出的jar須要給其餘程序提供服務時;當第三方提供的jar包或其餘類型的依賴包不在遠程中央倉庫中時;請將正式發佈版的jar用命令deploy或者在web端手動上傳至私服對應的release倉庫。

②若是是jar包提供方,請在代碼變更時及時更新私服中對應的jar包版本,並聯系管理員將淘汰jar包下線,以避免引發引用事故;並及時更新發布包releasenotes(推薦在CF中維護),使引用方及時獲取版本更新信息。

下載/依賴:①當代碼須要使用第三方包時,除非對方代碼仍在開發過程當中,不然請選擇三方包的正式release(發佈)版本

②如提供方是公司內部其餘系統,而且該系統未提供release版本包,請主動要求該系統負責人提供release版本包,以保證開發代碼版本穩定,而且關注該包的版本升級狀況。

2.     snapshot庫(快照庫)使用使用規則及場景:

snapshot庫是存放中間版本包的倉庫,表明該庫中jar包的程序處於不穩定狀態。當代碼在開發過程當中有其餘程序須要引用時,能夠提供snapshot版jar包用於調試和測試。因爲snapshot庫的包依然處於測試狀態,因此隨時能夠上傳同版本最新包來替換舊包,基於這種不穩定狀態,maven容許snapshot庫中的包被編譯時隨時更新最新版,這就可能會致使每次打包編譯時同一個版本jar會包含不一樣的內容,因此snapshot庫中的包是不能用來發布的;

snapshot庫倉庫名中帶有「snapshots」標識,包括libs-snapshots-local,plugins- snapshots-local兩個倉庫。私服中snapshot庫使用規則以下:

a) 快照庫能夠刪除jar;

b) 快照庫能夠同版本更新jar包;

c) 第三方包(非公司內部開發)不容許引用快照版

d) 快照庫僅可用來聯調測試環節使用,不建議用於線上的穩定發佈版本

e) 快照庫上傳的jar包版本號(version)必須以「-SNAPSHOT」結束,並上傳至私服後系統將自動將「-SNAPSHOT」替換爲時間戳串(本地代碼引用時依然用「-SNAPSHOT」結束的版本號,無需替換時間戳),一個快照包線上將存在至少兩個版本。

snapshot庫使用場景:

根據上述snapshot庫的使用規則可知,snapshot版的包僅供中間過程以供臨時引用,若在最終發佈過程當中引用,頗有可能由於jar包被更新或者未更新而引用方不知道而引發代碼錯誤,因此請僅在以下場景場景中使用snapshot倉庫:

上傳/發佈:開發中的代碼構建出的jar須要給其餘程序提供服務時,請將snapshot版的jar用命令deploy或者在web端手動上傳至私服對應的snapshot倉庫。

下載/依賴:當代碼須要使用其餘開發過程當中代碼的jar包時,請依賴該包的snapshot(快照)版本。maven類型工程使用過程當中請使用「-U」強制更新命令,來獲取最新版本包。

3.     常見問題

①    上傳jar包後,編譯時發現代碼找parent包,可是私服找不到jar,並且代碼中也不須要這個parent

緣由:問題多發於web端上傳jar包時,自動生成pom.xml 文件中自帶<parent/>節點

解決:使用web端上傳時,請注意自行刪除節點配置。

② 下載不了最新snapshot版本的jar包

緣由:發佈snapshot版本未連同對應的pom一塊兒發佈,只有jar包,沒有pom,在maven編譯時候會直接報錯pom找不到,或者因jar包未更新編譯報錯。

解決:從新連同jar包一塊兒發佈便可解決。

③ 譯後jar包變多或變少

緣由:編譯環境中傳遞依賴引用的快照包版本低,引用了錯誤版本的包進入代碼。

解決:1.使用以下命令,檢查依賴樹,肯定是哪一個包引用到錯的版本:mvn  dependency:tree;2.清除編譯環境未更新的錯誤包,從新編譯。

相關文章
相關標籤/搜索