純干貨!華為軟件開發云編譯構建之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 snapsh ot倉庫,需要配置pom文件。
【Maven參數】:默認是-U,在編譯的時候會下載snapsh ot倉庫的最新依賴包。如果有需要可以配置其他的參數(見圖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屬性配置
具體如何查找屬性請參考下面鏈接:
http://www.cnblogs.com/EasonJim/p/6865150.html
【JVM選項】: 在基于Maven管理的Java項目中,經常出現內存溢出的錯誤,這種情況下,需要進行JVM的參數設置更新,一般而言,都是根據內存溢出問題的不同,針對內存、permspace來進行調整和設置。比如增大PermGen區空間為128M,設置方法為
set
MAVEN_OPTS=-XX:MaxPermSize=128M,實際填寫【JVM選項】時,只寫入【-XX:MaxPermSize=128M】(見圖15),如果需要設置多個屬性,屬性之間用空格分隔。
圖15 maven JVM選項配置
JVM的具體參數請參考下面的鏈接:
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
【編譯構建后】選擇【發布到編譯構建倉庫】(見圖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構建會給你帶來很多的好處和驚喜。
軟件開發云
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。