maven版本號管理

如今所說的maven版本號不同於SVN的版本號控制哦!!!

之前我們說過Maven的版本號分爲快照和穩定版本號,快照版本號使用在開發的過程中,方便於團隊內部交流學習。而所說的穩定版本號,理想狀態下是項目到了某個比較穩定的狀態。這個穩定包括了源碼和構建都要穩定。

一、怎樣衡量項目的穩定狀態呢?

  1. 所有的自己主動化測試應當所有通過

  2. 項目沒有配置不論什麼快照版本號的依賴

  3. 項目沒有配置不論什麼快照版本號的插件

  4. 項目所包括的代碼都已經所有提交到了版本號控制系統中

5.我們應當再一次運行Maven構建,以確保項目的狀態是OK的

6.
我們將這一次變更提交到版本號控制的主幹中,並打上標籤

僅僅有滿足了上述6個條件, 我們就能夠將這一個快照版本號更新至公佈版本號

二、在開發的過程中,版本要怎樣進行變更呢?Maven是否有潛在的約定?

我們在開發的過程中。下載jar包的時候常常會發現某個jar類似這樣:1.2.3-beat-4.jar

多麼複雜的一個名稱。。

以下來解釋一下。這裏每一個數字的含義:

“ 1 ” : 表示該版本號的第一個重大版本號

“ 2 ” : 表示這是基於重大版本號的第二個次要版本號

“ 3 ” : 表示該次要版本號的第三個增量

” beat-4” : 表示該增量的一個里程碑

用一個圖來描寫敘述:

< 主版本號 > —— < 次版本號 > —— < 增量版本號 > —— < 里程碑版本號 >

主版本號:表示了項目的重大架構變更 struts1 – struts2
次版本號:表示較大範圍的功能添加和變化 Nexus1.5 —- Nexus1.4

增量版本號:一般表示重大Bug修復

里程碑版本號:指某一個版本號的里程碑 .-alpha-1 .-beat-1

看起來有點麻煩啊。 可是在一般來說,我們僅僅會聲明主版本號和次版本號,增量版本號和里程碑版本號就不一定了。

注:maven中約定的版本號次序:

對於主版本號、次版本號、增量版本號來說他們的比較是基於數字的。因此:1.5>1.4>1.3>1.2.11>1.2.8

對於里程碑版本號來說,比較是基於字符串的。因此:1.5>1.4>1.3>1.2.3>1.2.11

三、主幹、分支、標籤

上面的筆記中提到了主幹和標籤,究竟怎樣理解主幹、分支、標籤呢?

主幹: 項目開發代碼的主體,是從項目開始到當前都處於活動的狀態,從這裏能夠獲得項目最新的源碼和差點兒全部的變更歷史

分支: 從主幹的某個點分離出來的代碼拷貝。通常能夠在不影響主幹的前提下。在這裏進行重大的bug修復或者實驗性質的開發。假設達到了預期的目的,通常將這裏的變更合併到主幹中去。

標籤: 用來標識主幹或者分支的某個點的狀態,以代表項目的某個穩定狀態,也就是通常說的公佈狀態

這三個元素,能夠清晰的描寫敘述出項目的版本號管理,並且也已經成了一個默認的行業標準。

四、自己主動化版本號公佈

用久了手動版本號公佈之後。我們會想到是否能進行自己主動化的公佈版本號。答案是肯定的,這將引入一個新的插件:Maven Release Plugin

通過一些必要的配置。就能夠完畢版本號公佈

Maven Release Plugin 插件簡單介紹:

該插件主要有三個目標:release: prepare, release: rollback, release: perform (什麼是插件目標),在介紹分支自己主動化的時候還會引入branch目標

①release:prepare 準備版本號公佈。依次運行下列操作

  1. 檢查項目是否有未提交的代碼

  2. 檢查項目是否有快照版本號依賴

  3. 依據用戶的輸入將快照版本號升級爲公佈版

  4. 將POM中的SCM信息更新爲標籤地址

  5. 基於改動後的POM運行maven構建

  6. 提交POM變更

  7. 基於用戶輸入爲代碼打標籤

  8. 將代碼從公佈版升級爲新的快照版

9.提交POM變更

release: rollback

回退release: prepare所運行的操作。

將POM回退至release:prepare之前的狀態。並提交。

注:該步驟不會刪除release:prepare生成的標籤,須要用戶手動刪除

release: perform

運行版本號公佈

簽出release:prepare生成的標籤中的源碼,並在此基礎上運行mvn deploy命令打包並部署構件至倉庫

注:要爲項目公佈版本號,首先須要爲其加入正確的版本號控制系統信息(這是由於Maven Release Plugin須要知道版本號控制系統的主幹、標籤等地址後才幹運行相關操作)

②分支的自己主動化創建

先看一下Maven Release Plugin 的branch目標能幫助我們做哪些事情

  1. 檢查本地有無未提交的代碼

  2. 將分支更改POM的版本號。如:1.1.0-SNAPSHOT改成1.1.1-SNAPSHOT

  3. 將POM中的SCM信息更新爲分支地址

  4. 提交以上更改

  5. 將主幹代碼拷貝到分支中

  6. 改動本地代碼使其回退到分支前的版本號(用戶能夠指定新的版本號)

  7. 提交本地更改

注:此時也必須正確的配置SCM信息

五、代碼安全

代碼安全是我們比較關心的一個問題, 比方說。當我們從中央倉庫下載第三方構件的時候,我們可能要去驗證這些文件的合法性,或者當我們公佈項目後。使用我們項目的人也要驗證

引入一個新的插件:Maven GPG Plugin 自己主動的完畢簽名

在使用Maven GPG Plugin之前,首先須要確定GPG是可用的,然後再POM中配置插件就可以

pom.xml


org.apache.maven.plugins
maven-gpg-plugin
1.0


sign-artifacts
verify

sign



然後使用一般的Maven命令簽名並公佈項目構件
$mvn clean deploy -Dgpg.passphrase=**

注:
1. 假設不提供 -Dgpg.passphrase參數,執行時就會要求輸入password

本文同意轉載,但請標明出處:http://blog.csdn.net/wanghantong/article/38424065,
版權全部

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章