摘要:每定義一個(gè)版本時(shí),需要同時(shí)定義各個(gè)模塊的版本號(hào),定義好以后,更新父的版本號(hào),需要使用模塊新特性的就更新父的版本,這樣就保證版本能夠統(tǒng)一進(jìn)行管理。
Maven 是一個(gè)項(xiàng)目管理工具,每個(gè)項(xiàng)目deploy到repository中以后,都有一個(gè)坐標(biāo),坐標(biāo)中就包含一個(gè)版本,那個(gè)版本將是我們進(jìn)行版本控制管理的一個(gè)重點(diǎn)。
一個(gè)產(chǎn)品實(shí)際可能包含10幾個(gè)模塊,模塊間會(huì)有依賴關(guān)系,所以在項(xiàng)目管理中經(jīng)常聽到這種抱怨:
“測(cè)試環(huán)境又發(fā)不了券了?”
“是誰(shuí)又把我的jar包覆蓋了?”
“這個(gè)功能測(cè)試環(huán)境都測(cè)試好了,到了預(yù)生產(chǎn)怎么又不行了?”
“jar包又被哪個(gè)傻X覆蓋了?”
這些基本上都是因?yàn)閷?shí)際研發(fā)過程中版本管理混亂或者幾乎沒有版本管理造成的,有的是直接就一個(gè)版本用到底,所有環(huán)境都用一個(gè)版本,經(jīng)常是還沒上線的代碼deploy到repository中,導(dǎo)致線上其他模塊發(fā)布出現(xiàn)了問題。
大家可以想象一下,一個(gè)項(xiàng)目中可能有10幾個(gè)模塊,每個(gè)模塊都有依賴的模塊,無(wú)論是哪套環(huán)境,任何一次deploy都可能影響到其他的環(huán)境,這是多么恐怖的事情。所以,“穩(wěn)定大于一切”,“應(yīng)該給研發(fā)人員和測(cè)試人員應(yīng)有的安全感!”
如何在maven中進(jìn)行這個(gè)版本的控制呢?如何解決這些問題呢?
1.版本統(tǒng)一進(jìn)行定義管理定義一個(gè)統(tǒng)一的父pom項(xiàng)目,該項(xiàng)目只進(jìn)行版本的管理,其他所有的模塊的版本都在父pom中配置管理,一個(gè)模塊依賴其他模塊時(shí)統(tǒng)一繼承父pom中的版本。
定義好每個(gè)迭代周期的版本后,統(tǒng)一修改父pom的版本,父pom中定義好各個(gè)環(huán)境的profile,不同的環(huán)境使用不同的profile。
每定義一個(gè)版本時(shí),需要同時(shí)定義各個(gè)模塊的版本號(hào),定義好以后,更新父pom的版本號(hào),需要使用模塊新特性的就更新父pom的版本,這樣就保證版本能夠統(tǒng)一進(jìn)行管理。如下圖父pom項(xiàng)目中1.0.3版本的對(duì)應(yīng)的user是1.0.2版本,order是1.0.1版本,pay是1.0.3版本。如果下一次要進(jìn)行新功能開發(fā),user修改版本為1.1.0,其他模塊接口不變,那么父pom就需要進(jìn)行版本升級(jí)為1.1.0,pay依賴user模塊1.1.0版本就需要更新父pom的版本號(hào)。
父pom項(xiàng)目統(tǒng)一由管理員進(jìn)行控制管理,每次版本修改都由管理進(jìn)行發(fā)布管理。
2.支持多套環(huán)境的版本切換maven倉(cāng)庫(kù)支持snapshot版本和release版本,研發(fā)環(huán)境和測(cè)試環(huán)境可以使用snapshot版本進(jìn)行發(fā)布,研發(fā)環(huán)境和測(cè)試環(huán)境屬于高頻deploy執(zhí)行的,所以保證不更新版本號(hào)每次deploy后maven打包時(shí)會(huì)更新依賴,正式環(huán)境使用relase版本,如果需要升級(jí)就更新版本號(hào)。
3.支持多版本同時(shí)存在每個(gè)項(xiàng)目可以發(fā)布多個(gè)版本,不同的版本可以被不同的模塊依賴,能夠各取所需,比如,user模塊有1.0.1-release版本和1.0.3-release版本,這兩個(gè)版本可以被不同的模塊引用,只有需要1.0.3-release新特性的模塊才對(duì)應(yīng)更新父pom的版本。
以上就是我在項(xiàng)目管理中實(shí)際使用maven進(jìn)行版本控制的經(jīng)驗(yàn)。
歡迎大家關(guān)注我的微信公眾號(hào)(xtech100),一切討論切磋!
這是我在百家號(hào)的原文地址
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72305.html
摘要:是一個(gè)項(xiàng)目管理工具,它包含了一個(gè)項(xiàng)目對(duì)象模型,一組標(biāo)準(zhǔn)集合,一個(gè)項(xiàng)目生命周期,一個(gè)依賴管理系統(tǒng),和用來(lái)運(yùn)行定義在生命周期階段中插件目標(biāo)的邏輯。此外,能夠很方便的幫你管理項(xiàng)目報(bào)告,生成站點(diǎn),管理文件,等等。 在進(jìn)行實(shí)際項(xiàng)目開發(fā)時(shí)往往不是由一個(gè)人去完成一整個(gè)項(xiàng)目,而是分模塊進(jìn)行完成最后將所有項(xiàng)目進(jìn)行聚合,那么就可以用到maven和svn。MAVEN是用來(lái)管理項(xiàng)目的,我認(rèn)為它最大的優(yōu)勢(shì)就在于...
摘要:軟件項(xiàng)目的管理就會(huì)變得簡(jiǎn)單很多。比如說的驅(qū)動(dòng)程序,,在是獲取不到的,就需要手工上傳到里是倉(cāng)庫(kù)組,在里沒有這個(gè)概念,是特有的。 什么是Maven Maven是一個(gè)采用純Java編寫的開源項(xiàng)目管理工具, Maven采用了一種被稱之為Project Object Model (POM)概念來(lái)管理項(xiàng)目,所有的項(xiàng)目配置信息都被定義在一個(gè)叫做POM.xml的文件中.. Maven是一款跨平臺(tái)的項(xiàng)目...
摘要:引言有過一定應(yīng)用開發(fā)的小伙伴一定有過使用框架搭建項(xiàng)目的經(jīng)歷。由于的面向項(xiàng)目的方法,許多項(xiàng)目發(fā)文時(shí)使用,而且公司項(xiàng)目采用的比例在持續(xù)增長(zhǎng)。 引言 有過一定web應(yīng)用開發(fā)的小伙伴一定有過使用框架搭建web項(xiàng)目的經(jīng)歷。的確,使用一些框架確實(shí)給我們的工作帶來(lái)了很大的方便使得開發(fā)人員把更多的時(shí)間專注于業(yè)務(wù)的開發(fā)而把業(yè)務(wù)的邏輯實(shí)現(xiàn)交給了框架來(lái)實(shí)現(xiàn),而搭建框架時(shí)比較煩的就是引入一系列jar包,因?yàn)槲?..
閱讀 3116·2021-10-12 10:20
閱讀 2835·2021-09-27 13:56
閱讀 806·2021-09-27 13:36
閱讀 1444·2021-09-26 09:46
閱讀 2433·2019-08-30 14:02
閱讀 2700·2019-08-28 18:14
閱讀 1280·2019-08-26 10:32
閱讀 1717·2019-08-23 18:25