Maven Release發(fā)布指南---Git版

MavenRelease發(fā)布指南---Git版

1.RELEASE的說明

1.1snapshot與release的區(qū)別

大多數(shù)java開發(fā)的小伙伴都用過maven來對包進行管理扛拨。在自己寫項目的過程中侨颈,對自己的項目也會進行g(shù)roupdId,artifactId,version的配置。下面我們來對著3個配置進行簡單說明。

  1. groupId:顧名思義帖族,這個里面包含的是本項目屬于哪一個group(即組織或公司)庸毫。一般我們會用公司或者自己的前幾級包名來進行定義冠跷。
  2. artifactId:這個值定義的是本項目的名字爹凹。
  3. version:這個就是我們今天講解的關(guān)鍵了厨诸。這個項目在maven進行發(fā)布以后的版本號。

一般禾酱,我們在剛開一個項目以后會將version定義為1.0-SNAPSHOT微酬。snapshot單詞從字面意思來說,是快照颤陶、照相的意思颗管。為什么我們新的項目要使用SNAPSHOT呢?而不是我們引入的那些公共包的.RELEASE或者只有版本號什么都不帶呢滓走?這兩個又有什么區(qū)別呢忙上?聽我慢慢道來:
一個項目在未上線發(fā)布之前會在測試環(huán)境或者開發(fā)環(huán)境中進行測試和調(diào)整,也有可能有需求變更和重構(gòu)闲坎。所以,snapshot說明了茬斧,這個包還未固化其自身提供的服務(wù)腰懂。在使用帶有snapshot的包的時候要特別小心。他很可能發(fā)生變化项秉,不知道什么時候你之前使用的功能就會被這個包的維護人員干掉或者改變了绣溜。
而大家使用的類似Spring之類的公共開源包都是以RELEASE結(jié)尾的,這說明了當(dāng)前這個版本號的包會穩(wěn)定的提供功能服務(wù)娄蔼,不會發(fā)生任何變化怖喻。如果需要變化只能通過修改版本號。

1.2release的必要性

當(dāng)我們的項目達到了當(dāng)前的目標(biāo)岁诉,在經(jīng)過檢測后不需要改變锚沸。這時我們就需要將SNAPSHOT版本打包成RELEASE版本弥咪。只有這樣粒褒,使用這個包的用戶才能放心的將這個版本的包放入自己的項目中使用。并且涝焙,不會擔(dān)心這個功能包提供的功能會隨時發(fā)生改變坠韩。
接下來我們就學(xué)習(xí)如何將在git中管理的功能包從snapshot打包成為release版本

2.scm的配置

scm是mvn為我們提供的距潘,對版本管理軟件進行管理和操作的插件。由于本指南只講解打包過程只搁,不會詳細講解本工具的具體概念和使用方式音比。

<project>
<scm> 
        <!--release包需要放入的nexus或者其他maven release包的倉庫url地址-->
        <url>http://xxxx/nexus/content/repositories/releases/</url>
        <!--connection, developerConnection: 都是連接字符串,其中后者是具有write權(quán)限的scm連接 -->
        <!--需要打包項目的git地址-->
        <developerConnection>scm:git:http://xxxx/c-h5/portal-common-base.git</developerConnection>
         <!--需要打包項目的git地址-->
        <connection>scm:git:http://xxx/c-h5/portal-common-base.git</connection>
        <!---->
        <tag>HEAD</tag>
    </scm>
</project>

3.maven-release-plugin的配置

<build>
 <plugins>
            <!-- 發(fā)布插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <!--git用戶名-->
                    <username>xxxxx@shishike.com</username>
                    <!--git密碼-->
                    <password>xxxx</password>
                    <!--mvn目標(biāo)指令-->
                    <goals>-f pom.xml deploy</goals>
                </configuration>
            </plugin>
        </plugins>
</build>        

4.release的操作流程

4.1第一步release:prepare

這條命令主要是做打包前的準(zhǔn)備氢惋。

  1. 輸入對應(yīng)的release需要打包的版本等信息洞翩,如果不輸入有默認(rèn)的內(nèi)容
  2. 將需要記錄和準(zhǔn)備的內(nèi)容緩存到pom.xml目錄下的release.properties文件中
  3. 在本地和遠程庫的GIT中打上對應(yīng)版本的tag

在準(zhǔn)備過程中還會run 單元測試等phase稽犁,如果沒有異常的話可以繼續(xù)最后一步。如果git還沒有commit或單元測試失敗會導(dǎo)致prepare失敗菱农,這時候你就需要到下面一個命令了缭付。

4.2后悔藥release:rollback

如果在準(zhǔn)備階段發(fā)生錯誤,或者需要修改某些地方的話循未。就需要到這個命令了陷猫,這個命令執(zhí)行以后會做以下這些事

  1. 刪除線上git庫tag,但是本地庫tag沒有被刪除的妖,需要手動使用git tag -d XXX進行刪除绣檬。如果不將本地庫中的tag刪除將會導(dǎo)致prepare失敗。
  2. 刪除之前緩存在pom.xml統(tǒng)一目錄下的配置

4.3最后一步release:perform

如果確認(rèn)無誤了以后嫂粟,就可以執(zhí)行perform命令了娇未。這個命令干了以下這些事:

  1. 驗證代碼合法性
  2. 將你之前的1.0-SNAPSHOT改為1.1-SNAPSHOT
  3. 將1.0版本deploy至scm配置的nexus release庫中
  4. 將代碼source。jar版本 javacode星虹。jar打包上傳至nexus庫

恭喜零抬,你已經(jīng)把你的1.0-SNAPSHOT成功的打包成1.0的release版本了。同時你會發(fā)現(xiàn)你的pom.xml文件會自動的變成1.1-SNAPSHOT版本宽涌。雖然這一系列操作都可以通過手動完成平夜。但是有這個工具的存在,免去了很多步驟卸亮。也規(guī)范了流程忽妒,何樂而不為呢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兼贸,一起剝皮案震驚了整個濱河市段直,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溶诞,老刑警劉巖鸯檬,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異螺垢,居然都是意外死亡京闰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門甩苛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹂楣,“玉大人,你說我怎么就攤上這事讯蒲∪粒” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵墨林,是天一觀的道長赁酝。 經(jīng)常有香客問我犯祠,道長,這世上最難降的妖魔是什么酌呆? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任衡载,我火速辦了婚禮,結(jié)果婚禮上隙袁,老公的妹妹穿的比我還像新娘痰娱。我一直安慰自己,他們只是感情好菩收,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布梨睁。 她就那樣靜靜地躺著,像睡著了一般娜饵。 火紅的嫁衣襯著肌膚如雪坡贺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天箱舞,我揣著相機與錄音遍坟,去河邊找鬼。 笑死晴股,一個胖子當(dāng)著我的面吹牛愿伴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播队魏,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼万搔!你這毒婦竟也來了胡桨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤瞬雹,失蹤者是張志新(化名)和其女友劉穎昧谊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酗捌,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡呢诬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胖缤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尚镰。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哪廓,靈堂內(nèi)的尸體忽然破棺而出狗唉,到底是詐尸還是另有隱情,我是刑警寧澤涡真,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布分俯,位于F島的核電站肾筐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缸剪。R本人自食惡果不足惜吗铐,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杏节。 院中可真熱鬧唬渗,春花似錦、人聲如沸拢锹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卒稳。三九已至蹋半,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間充坑,已是汗流浹背减江。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捻爷,地道東北人辈灼。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像也榄,于是被迫代替她去往敵國和親巡莹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容