2012年6月26日 星期二

邁向自動建置佈署之路(1) - 建置 Maven Repository


曾經有個PM問我東西什麼時候可以build好,什麼時候可以Demo,但是我沒鳥他...
等到Demo時,現測試機上不是最新的程式才後悔莫及,工程師最痛苦的是莫過於此。
如果上天可以給我個機會再來一次的話,我會對這PM說,我要Reschedule~~
如果非要在schedule 上壓個期限,我希望是一萬年....   
 (喂~~最近有人很愛亂用星爺梗~)

好廢話不多說,延續"沒有搭配工具與方法的敏捷式開發"這篇文章,如果要達到 Build automation 甚至 Deploy automation,必須要搭配哪些工具呢?接下來我會分幾個章節來分享,應該要安裝怎樣的系統,以及我們目前所使用的是哪套軟體:
此外還是想建議一下,在公司內裝一個Project Management 或Issue tracking 系統,真的對於專案的運行會很有幫助 (之後再來分享),我們目前採用對內:JIRA 、對外:BugZilla,給各位參考一下。

野人獻曝之安裝個Maven Repository吧!


SVN 我想應該就不用再介紹了吧?(沒在用Soruce control?拖去處斬了),所以我們先從Maven開始介紹,Maven主要是要解決Jar dependency地獄,回想起沒有Maven的那個年代,大家可能就是jar檔copy 來copy去,常常會抓到錯誤的版本,不然就是升級jar檔時,又會發現許多API根本不相容,或者是還需要引入其他的3rd-party lib,那時候開發專案,真是茹毛飲血的日子啊~@@

還好現在有Maven (讀音:是妹份不是媽份),用Maven 可以很容易管理所需要用到的library,不管是 3rd-party還是自己公司開發的,此外他也提供一個產品庫模型,一個管理和描述項目的軟件引擎。定義了構建、測試、部署項目產品的標准生命周期 [優點與介紹],不過有個小小的缺點:
  • 從公司連 public maven repositories 很慢
  • 很多Libray 並沒有放在官方的repository,所以必須手動加入其他網站 
  • 公司內部的 libraries無法(也不適合)放到 public repository 讓大家存取
解決這幾個問題的方式很簡單,就是建立自己的 local maven repository,有以下好處:
  • 具有Proxy的作用,可以有效減少對外網路頻寬的浪費與提昇速度。
  • Admin可以事先把常連到的Repository設定好,這樣開發人員只要連上使用就好
  • 提供一個可以管理團隊自行開發library的機制 (這對將來Build AutomationDeploy Automation很重要)。

下面列出一些跟Maven相關的重要資訊:

Maven repository Manager

Maven Repository Manager有那麼多種,究竟要選擇哪個呢?各位可以參考這篇文章,根據幾的需求,去選擇要使用哪套系統 "Maven Repository Manager Feature Matrix"

Maven Repository


因為並不是所有的Library都會放在Central Repository 所以下面列了一些我收集常用的Repository:
  • repo2 
    • http://repo2.maven.org/maven2 
  • ibiblio 
    • http://mirrors.ibiblio.org/pub/mirrors/maven2 
  • javanet
    • http://download.java.net/maven/2 
  • springframework
    • http://maven.springframework.org/release
  • jboss           
    • http://repository.jboss.com/maven2
  • anyframejava 
    • http://dev.anyframejava.org/maven/rep 
  • internet2
    • http://www.internet2.edu/grouper/downloads/maven2
  • Codehaus 
    •  https://nexus.codehaus.org/content/repositories/releases/
    •  https://nexus.codehaus.org/content/repositories/snapshots/

 Maven Plugin 


Maven 的Plugin 就真的是Maven 最powerfull的地方,透過Plugin結合CI就可以幫你自動化產出許多報告和報表,以下就列出我們常用的Plugin:

呼...好累今天就先整理到這裡~
張貼留言