maven中snapshot快照庫(kù)和release發(fā)布庫(kù)的區(qū)別和作用 --- 轉(zhuǎn)
[本文地址] 本文永久地址是:http://www.mzone.cc/article/277.html
在使用maven過(guò)程中,我們?cè)陂_(kāi)發(fā)階段經(jīng)常性的會(huì)有很多公共庫(kù)處于不穩(wěn)定狀態(tài),隨時(shí)需要修改并發(fā)布,可能一天就要發(fā)布一次,遇到bug時(shí),甚至一天要 發(fā)布N次。我們知道,maven的依賴(lài)管理是基于版本管理的,對(duì)于發(fā)布狀態(tài)的artifact,如果版本號(hào)相同,即使我們內(nèi)部的鏡像服務(wù)器上的組件比本地 新,maven也不會(huì)主動(dòng)下載的。如果我們?cè)陂_(kāi)發(fā)階段都是基于正式發(fā)布版本來(lái)做依賴(lài)管理,那么遇到這個(gè)問(wèn)題,就需要升級(jí)組件的版本號(hào),可這樣就明顯不符合 要求和實(shí)際情況了。但是,如果是基于快照版本,那么問(wèn)題就自熱而然的解決了,而maven已經(jīng)為我們準(zhǔn)備好了這一切。
maven中的倉(cāng)庫(kù)分為兩種,snapshot快照倉(cāng)庫(kù)和release發(fā)布倉(cāng)庫(kù)。snapshot快照倉(cāng)庫(kù)用于保存開(kāi)發(fā)過(guò)程中的不穩(wěn)定版 本,release正式倉(cāng)庫(kù)則是用來(lái)保存穩(wěn)定的發(fā)行版本。定義一個(gè)組件/模塊為快照版本,只需要在pom文件中在該模塊的版本號(hào)后加上-SNAPSHOT即可(注意這里必須是大寫(xiě)),如下:
<groupId>cc.mzone</groupId> <artifactId>m1</artifactId> <version>0.1-SNAPSHOT</version> <packaging>jar</packaging>
maven2會(huì)根據(jù)模塊的版本號(hào)(pom文件中的version)中是否帶有-SNAPSHOT來(lái)判斷是快照版本還是正式版本。如果是快照版本,那么在 mvn deploy時(shí)會(huì)自動(dòng)發(fā)布到快照版本庫(kù)中,而使用快照版本的模塊,在不更改版本號(hào)的情況下,直接編譯打包時(shí),maven會(huì)自動(dòng)從鏡像服務(wù)器上下載最新的快 照版本。如果是正式發(fā)布版本,那么在mvn deploy時(shí)會(huì)自動(dòng)發(fā)布到正式版本庫(kù)中,而使用正式版本的模塊,在不更改版本號(hào)的情況下,編譯打包時(shí)如果本地已經(jīng)存在該版本的模塊則不會(huì)主動(dòng)去鏡像服務(wù) 器上下載。
所以,我們?cè)陂_(kāi)發(fā)階段,可以將公用庫(kù)的版本設(shè)置為快照版本,而被依賴(lài)組件則引用快照版本進(jìn)行開(kāi)發(fā),在公用庫(kù)的快照版本更新后,我們也不需要修改pom文 件提示版本號(hào)來(lái)下載新的版本,直接mvn執(zhí)行相關(guān)編譯、打包命令即可重新下載最新的快照庫(kù)了,從而也方便了我們進(jìn)行開(kāi)發(fā)。
posted on 2012-10-03 17:23 大龍 閱讀(280) 評(píng)論(0) 編輯 收藏 引用