框架版本號的設計

1.目前問題

目前由于都是用的snapshot快照版本,并且有些版本沒設置版本號,導致加大了引起生產事故的風險,同時也會讓maven構建變慢狸驳,所以我們需要對現在jar的版本進行規(guī)范化

2.我們內部的版本升級建議

我們將所有的二方庫的包都使用父類的版本來管理预明,為了方便,都統(tǒng)一用父類的版本號耙箍。
例如:
父類:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xxxxx.frame</groupId>
    <artifactId>frame</artifactId>
    <version>1.1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>frame</name>

kafka框架
不設置版本號撰糠,用父類的版本號

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.xxxxx.frame</groupId>
        <artifactId>frame</artifactId>
        <version>1.1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>frame-kafka</artifactId>
    <packaging>jar</packaging>

所以frame下面的所有air-xxx-clientframe-async-download等子模塊的版本都是1.1.0-SNAPSHOT辩昆。

優(yōu)化

當前為了方便好管理阅酪,都是將所有的子jar版本都統(tǒng)一成一個版本號,在父pom里管理汁针。
之所以都公用一個父版本號是前期為了方便管理术辐,也方便修改。

1.開發(fā)階段

例如frame-kafka的這個包目前的版本是1.1.0,這個是已經發(fā)布的正式的jar包施无。同時父類的frame:com.xxxx.frame的版本也肯定是1.1.0

這個時候有了一個新的需求需要對frame-kafka修改辉词,那我們就拉了一個新的分支,然后將父類frame:xxxx.frame這個的版本號改成1.1.1-SNAPSHOT猾骡。
此時父類的POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xxxxx.frame</groupId>
    <artifactId>frame</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>frame</name>

frame-kafka-xxxxx的POM:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.xxxxx.frame</groupId>
        <artifactId>frame</artifactId>
        <version>1.1.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>frame-kafka</artifactId>
    <packaging>jar</packaging>

這里就是將我們的父類由1.1.0改成1.1.1-SNAPSHOT瑞躺。
同時我們也需要將其他在frame下面的項目的<parent>都改成1.1.1-SNAPSHOT

那在我們開發(fā)階段,我們都是使用當前版本的快照版本兴想,例如:

<dependency>
   <groupId>com.xxxxxx.frame</groupId>
   <artifactId>frame-kafka</artifactId>
   <version>1.1.1-SNAPSHOT</version>
</dependency>

升級原則:當前生產的版本升級一版本并且改成SNAPSHOT

2.提測階段

這個時候幢哨,我們仍然是用SNAPSHOT版本,因為如果在提測過程中我們就改成正式版本的話嫂便,一旦有bug需要修改捞镰,那這樣版本號就會升級的的很快。

3.測試通過毙替,準備上線階段

這個時候岸售,基本上沒什么需要修改了,代碼是不會再改動了厂画。那就可以把SNAPSHOT去掉冰评,重新打包,同時依賴方也需要去掉SNAPSHOT木羹,重新打包。
這個階段就不允許有除修改版本號的外的代碼提交了解孙。
如果去掉了SNAPSHOT坑填,并且已經構建二方庫了,但是仍然有bug弛姜,那就得回到提測階段脐瑰,同時這個版本號得再次升級成下一個版本的SNAPSHOT
例如:我們從1.0.0改成了1.1.0-SNAPSHOT,開發(fā)完成了廷臼,然后準備上線苍在,同時把1.1.0-SNAPSHOT改成了1.1.0正式版本绝页。這個時候構建好了,也放在測試環(huán)境了寂恬,就等發(fā)版本了续誉。但是發(fā)現有個代碼上的bug,那這個時候就需要將1.1.0改成1.1.1-SNAPSHOT初肉,同時依賴的地方也需要修改酷鸦。等真正測試完沒問題了,再改成1.1.1,然后上線牙咏。

例子

frame-kafka當前master分支1.1.0
父類pom也為1.1.0

開發(fā)階段1.1.0 -> 1.1.1-SNAPSHOT

提測階段:仍然 1.1.1-SNAPSHOT

上線階段1.1.1-SNAPSHOT -> 1.1.1

其他

1.對于三方庫如果提供的是SNAPSHOT版本臼隔,我們就得讓對方提供正式版本,如果沒有的話妄壶,我們就沒辦法修改了摔握。
2.對于版本升級頻繁的jar,我們的小版本可以設置大點比如1.1.0可以一直升級到1.1.8再到1.1.50丁寄,這樣一直改下去氨淌。

工具使用

由于每次升級都需要改版本,可以使用maven專門的修改版本的插件


image.png

點versions:set狡逢,然后這里輸入版本即可


image.png

這樣就會把所有依賴父模塊的版本都改了

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末宁舰,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子奢浑,更是在濱河造成了極大的恐慌蛮艰,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雀彼,死亡現場離奇詭異壤蚜,居然都是意外死亡,警方通過查閱死者的電腦和手機徊哑,發(fā)現死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門袜刷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莺丑,你說我怎么就攤上這事著蟹。” “怎么了梢莽?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵萧豆,是天一觀的道長。 經常有香客問我昏名,道長涮雷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任轻局,我火速辦了婚禮洪鸭,結果婚禮上亏掀,老公的妹妹穿的比我還像新娘爹橱。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布巩割。 她就那樣靜靜地躺著扩劝,像睡著了一般缺菌。 火紅的嫁衣襯著肌膚如雪薇溃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天梅肤,我揣著相機與錄音司蔬,去河邊找鬼。 笑死姨蝴,一個胖子當著我的面吹牛俊啼,可吹牛的內容都是我干的。 我是一名探鬼主播左医,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼授帕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浮梢?” 一聲冷哼從身側響起跛十,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秕硝,沒想到半個月后芥映,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡远豺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年奈偏,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躯护。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡惊来,死狀恐怖,靈堂內的尸體忽然破棺而出棺滞,到底是詐尸還是另有隱情裁蚁,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布继准,位于F島的核電站枉证,受9級特大地震影響,放射性物質發(fā)生泄漏锰瘸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一昂灵、第九天 我趴在偏房一處隱蔽的房頂上張望避凝。 院中可真熱鬧舞萄,春花似錦、人聲如沸管削。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽含思。三九已至崎弃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間含潘,已是汗流浹背饲做。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遏弱,地道東北人盆均。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像漱逸,于是被迫代替她去往敵國和親泪姨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容

  • Version:發(fā)布版本號,可以通過App Store袋坑、itunes或其它軟件看到仗处,是給用戶看的,如當前上架版本為...
    ibiaoma閱讀 7,784評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理咒彤,服務發(fā)現疆柔,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 概覽 做好版本迭代有助于項目管理 镶柱。本文將講述個人相關理解與實踐旷档,包括 snapshot 和 realease 版...
    milai閱讀 221評論 0 0
  • 版本號的命名 SemVer 根據國際主流的慣例,我們使用「語義化版本(Semantic Versioning)」的...
    zfylin閱讀 1,078評論 0 0
  • 1.簡介 versions-maven-plugin插件可以管理項目版本歇拆,特別是當Maven工程項目中有大量子模塊...
    木木與呆呆閱讀 14,148評論 4 15