一文学会 Maven 的版本发布
1. RELEASE的說明
1.1 snapshot與release的區(qū)別
大多數(shù)java開發(fā)的小伙伴都用過maven來對包進行管理。在自己寫項目的過程中,對自己的項目也會進行g(shù)roupdId,artifactId,version的配置。下面我們來對著3個配置進行簡單說明。
groupId:顧名思義,這個里面包含的是本項目屬于哪一個group(即組織或公司)。一般我們會用公司或者自己的前幾級包名來進行定義。
artifactId:這個值定義的是本項目的名字。
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é)尾的,這說明了當前這個版本號的包會穩(wěn)定的提供功能服務(wù),不會發(fā)生任何變化。如果需要變化只能通過修改版本號。
1.2 release的必要性
當我們的項目達到了當前的目標,在經(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目標指令--><goals>-f?pom.xml?deploy</goals></configuration></plugin></plugins> </build>4.release的操作流程
4.1 第一步release:prepare
這條命令主要是做打包前的準備。
輸入對應(yīng)的release需要打包的版本等信息,如果不輸入有默認的內(nèi)容
將需要記錄和準備的內(nèi)容緩存到pom.xml目錄下的release.properties文件中
在本地和遠程庫的GIT中打上對應(yīng)版本的tag
在準備過程中還會run 單元測試等phase,如果沒有異常的話可以繼續(xù)最后一步。如果git還沒有commit或單元測試失敗會導(dǎo)致prepare失敗,這時候你就需要到下面一個命令了。
4.2 后悔藥release:rollback
如果在準備階段發(fā)生錯誤,或者需要修改某些地方的話。就需要到這個命令了,這個命令執(zhí)行以后會做以下這些事
刪除線上git庫tag,但是本地庫tag沒有被刪除,需要手動使用git tag -d XXX進行刪除。如果不將本地庫中的tag刪除將會導(dǎo)致prepare失敗。
刪除之前緩存在pom.xml統(tǒng)一目錄下的配置
4.3 最后一步release:perform
如果確認無誤了以后,就可以執(zhí)行perform命令了。這個命令干了以下這些事:
驗證代碼合法性
將你之前的1.0-SNAPSHOT改為1.1-SNAPSHOT
將1.0版本deploy至scm配置的nexus release庫中
將代碼source。jar版本 javacode。jar打包上傳至nexus庫
恭喜,你已經(jīng)把你的1.0-SNAPSHOT成功的打包成1.0的release版本了。同時你會發(fā)現(xiàn)你的pom.xml文件會自動的變成1.1-SNAPSHOT版本。雖然這一系列操作都可以通過手動完成。但是有這個工具的存在,免去了很多步驟。也規(guī)范了流程,何樂而不為呢。
總結(jié)
以上是生活随笔為你收集整理的一文学会 Maven 的版本发布的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人类史上首张黑洞照片发布!
- 下一篇: 蚂蚁金服CTO鲁肃:支付宝成就了我,我做