1. 程式人生 > >純乾貨!華為軟體開發雲編譯構建之Maven

純乾貨!華為軟體開發雲編譯構建之Maven

一.Maven介紹

Maven是一個專案管理和整合的工具。Maven為開發者提供了一套完整的構建生命週期框架。開發團隊基本不用花多少時間就能自動完成工程的基礎構建配置,因為Maven使用了一個標準的目錄結構和一個預設的構建生命週期。

二.Maven用途

Maven提供了幫助管理

構建、文件、報告、依賴、SCMs、釋出、分發的方法。可以方便的編譯程式碼、進行依賴管理、管理二進位制庫等等。Maven的好處在於可以將專案過程規範化、自動化、高效化以及強大的可擴充套件性利用Maven自身及其外掛還可以獲得程式碼檢查報告、單元測試覆蓋率、實現持續整合等等。

三.Maven配置

1. 新建構建任務

首先在

華為軟體開發雲中新建構建任務(見圖1)。


圖1 新建構建任務

【maven-demo】是使用者自定義的構建任務名稱。

【maven_demo】是已經建立的程式碼倉庫,【master】是【maven_demo】中的一個分支。

關於歸檔,需要注意兩點:

1)

歸檔的路徑,預設是【target/*.jar】,實際路徑取決於pom檔案的路徑,我們先看【maven_demo】的工程目錄(見圖2),pom檔案在【springmvc_demo】資料夾內,所以實際歸檔的路徑應該是【springmvc_demo/target/*.jar】。


圖2 maven_demo倉庫目錄結構

2) 歸檔型別,預設是jar,實際型別取決於pom檔案中的設定(見圖3),pom檔案中,打包型別是war,所以實際型別是war。


圖3 springmvc_demo工程pom檔案

所以,歸檔中,應該寫入【springmvc_demo/target/*.war】。

最後,成功建立構建任務。

2. 編輯構建任務

1) 基本資訊

建立任務時的配置是最基本的配置,使用者可以通過編輯任務配置更詳細的引數(見圖4)。


圖4 構建任務編輯步驟

在【基本資訊】中,可以設定【執行引數配置】,也就是在執行構建的時候,進行引數配置。這些引數主要用於設定【包名】、【版本號】、【分組】和【打包型別】,在【配置構建】中會使用這些引數(見圖5)。


圖5 執行引數配置

【字元型別】就是字串,【自定義型別】類似於列舉,從定義好的值中選擇一個(見圖6,圖7)。


圖6自定義型別引數編輯


圖7 自定義型別引數值

2) 程式碼配置

選擇要構建的程式碼倉庫和分支(見圖8)。


圖8 選擇一個程式碼倉庫

如果選擇【自動構建】,則只要倉庫程式碼有變動,就會觸發編譯構建。

根據專案需要,如果要構建多個倉庫,為了避免程式碼衝突,需要指定儲存目錄(見圖9)。


圖9 選擇多個程式碼倉庫

該儲存目錄由使用者自定義設定,在伺服器中對應的路徑與倉庫的目錄結構有關。

【maven_demo】的構建路徑如下圖:


圖10 maven_deno倉庫的工作目錄

【maven_demo2】的構建路徑如下圖:


圖11 maven_deno2倉庫的工作目錄

注意:倉庫【maven_demo2】的目錄結構與倉庫【maven_demo】的不同,前者的pom檔案在倉庫的根目錄下,後者的pom檔案在根目錄下的【springmvc_demo】目錄中。

3) 構建配置

構建環境選擇【Java】,構建型別選擇【Maven】。Maven的配置引數很多(見圖12)。


圖12 maven引數配置

【Maven版本】:目前只支援mvn3.3.1,之後會根據maven的版本升級而更新可選擇的版本號。

【釋出到私有庫】:預設不選是執行maven

package,打包到本專案,一般是在專案target目錄下。如果勾選,則執行maven

deploy,打包上傳到遠端倉庫,將軟體包釋出至使用者私有maven release和maven snapshot倉庫,需要配置pom檔案。

【Maven引數】:預設是-U,在編譯的時候會下載snapshot倉庫的最新依賴包。如果有需要可以配置其他的引數(見圖13)。


圖13 maven常用引數命令

【POM檔案】:如果pom檔案在倉庫的根目錄下,則不用填寫,如果像倉庫【maven_demo】,pom檔案不在根目錄下,需要指定pom檔案的路徑【springmvc_demo/pom.xml】,如果在【程式碼配置】中,指定了【儲存目錄】為test1,則需要要加上儲存目錄,即【test1/springmvc_demo/pom.xml】。

【屬性】:即構建指令碼需要的屬性。用命令列使用Maven的外掛時,-D表示屬性的輸入。例如maven的版本管理,增加屬性如下(見圖14):

#Maven 版本管理

branchName=xxxx-100317 #分支中的名稱

updateBranchVersions=false #是否更新分支的版本資訊,預設為false

updateWorkingCopyVersions=false #是否更新主幹的版本資訊,預設為true

每個屬性中不能有空格,屬性之間用空格分開。


圖14 maven屬性配置

具體如何查詢屬性請參考下面連結:

【JVM選項】: 在基於Maven管理的Java專案中,經常出現記憶體溢位的錯誤,這種情況下,需要進行JVM的引數設定更新,一般而言,都是根據記憶體溢位問題的不同,針對記憶體、permspace來進行調整和設定。比如增大PermGen區空間為128M,設定方法為

set

MAVEN_OPTS=-XX:MaxPermSize=128M,實際填寫【JVM選項】時,只寫入【-XX:MaxPermSize=128M】(見圖15),如果需要設定多個屬性,屬性之間用空格分隔。


圖15 maven JVM選項配置

JVM的具體引數請參考下面的連結:

編譯構建後】選擇【釋出到編譯構建倉庫】(見圖16)


圖16 編譯構建後引數配置

這裡,會定義【包名】、【版本號】、【檔案路徑】、【分組】和【打包型別】,這裡可以寫入固定的值,也可以使用在【基本資訊】中定義的引數,這裡使用的就是【基本資訊】中定義的引數。方法是${引數名}。關於【檔案路徑】,如果pom檔案在倉庫的根目錄下,並且沒有指定【儲存目錄】,則【檔案路徑】為【target/springmvc_demo.war】,如果指定了【儲存目錄】為test1,那麼在【檔案路徑】最前面應該加上儲存目錄,例如【test1/springmvc_demo/target/springmvc_demo.war】。

如果同時構建多個倉庫,則需要再增加【執行Maven】和【釋出到編譯構建倉庫】步驟(見圖17)。


圖17 多倉庫編譯構建後引數配置

4) 構建執行配置

【構建結果】選擇【歸檔】,【用於歸檔的檔案】預設就是全部包(見圖18)。具體路徑也是取決於pom檔案的路徑,參考【構建配置】中的【檔案路徑】。


圖18 構建結果配置

包的型別取決於pom檔案中的定義。【不包含】是指不需要歸檔的包,如果有多個,每個包之間用空格分隔。

如果選擇多個程式碼倉庫,則需要增加【歸檔】(見圖19)。


圖19 多倉庫構建結果配置

5) 構建計劃配置

【構建計劃】有【不定時】、【每日】和【每週】。

【不定時】是指使用者手動構建,使用者不操作,就不會構建。

【每日】是指每天定時構建,不需要使用者操作(見圖20)。


圖20 每日構建計劃配置

【每週】是指每週可以固定哪幾天定時構建,如週二,週四(見圖21),也不需要使用者操作。


圖21 每週構建計劃配置

【構建時長限制】是指一次構建最長時間限制,如果超過該時長還沒有構建完畢,則停止構建。

四.Maven構建

使用者執行【開始構建】,會彈出引數視窗(見圖22)。


圖22 執行構建配置

根據專案實際需求,填寫引數,這些引數是在【基本資訊】中定義好的,然後開始【執行】,最後構建成功(見圖23)。


圖23 構建成功

五.小結

maven不僅是構建工具,它還是依賴管理工具和專案管理工具,提供了中央倉庫,能夠幫我們自動下載構件。為了解決依賴的增多,版本不一致,版本衝突,依賴臃腫等問題,它通過一個座標系統來精確地定位每一個構件。maven還為全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎可以找到任何的流行開源軟體。通過衍生工具(nexus),我們還能對其進行快速搜尋。總之,maven構建會給你帶來很多的好處和驚喜。