曾經有個PM問我東西什麼時候可以build好,什麼時候可以Demo,但是我沒鳥他...
等到Demo時,現測試機上不是最新的程式才後悔莫及,工程師最痛苦的是莫過於此。
如果上天可以給我個機會再來一次的話,我會對這PM說,我要Reschedule~~
如果非要在schedule 上壓個期限,我希望是一萬年....
(喂~~最近有人很愛亂用星爺梗~)
好廢話不多說,延續"沒有搭配工具與方法的敏捷式開發"這篇文章,如果要達到 Build automation 甚至 Deploy automation,必須要搭配哪些工具呢?接下來我會分幾個章節來分享,應該要安裝怎樣的系統,以及我們目前所使用的是哪套軟體:
- Source Control Management
- SVN
- Maven Repository Manager
- Build Tool
- Continuous Integration Server
野人獻曝之安裝個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 讓大家存取
- 具有Proxy的作用,可以有效減少對外網路頻寬的浪費與提昇速度。
- Admin可以事先把常連到的Repository設定好,這樣開發人員只要連上使用就好
- 提供一個可以管理團隊自行開發library的機制 (這對將來Build Automation 與 Deploy 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:
- maven-surefire-plugin
- 每次Build自動跑所有Unit test
- maven-checkstyle-plugin
- 如果你們有Code style ,可以用這個來幫你們檢查是否有符合Code style
- maven-site-plugin (3.x 以後要產生Report有不同的設定方式)
- maven-project-info-reports-plugin
- 會自動產生報表網頁
- maven-surefire-report-plugin
- 產生Unit Test 結果報表
- maven-javadoc-plugin
- 產生 Java Doc
- maven-jxr-plugin
- 分析你的原始碼,產生Code Reference 關係報表,須搭配PMD
- maven-pmd-plugin
- 分析你的原始碼產生報告
- cobertura-maven-plugin
- 產生Unit test Code coverage報告
- javancss-maven-plugin
- 分析你的原始碼,產生quantity & complexity metrics
- jdepend-maven-plugin
- 分析你的原始碼,產生報表(如產生幾個Class,幾行code)
- taglist-maven-plugin
- 分析你的原始碼裡面還有哪些TODO、FIXME...等標籤
- buildnumber-maven-plugin
- 就算都是佈署Snapshot,系統還是有辦法分別版本和版號
- changelog-maven-plugin
- 根據SCM的commit log產生 changelog (比較少在用)
- cargo maven plugin (對於Deploy Automation很重要)
- 用來自動佈署war 檔到tomcat 或任何有支援的web container
呼...好累今天就先整理到這裡~
沒有留言:
張貼留言