雖然之前做過一陣子的軟體流程改善,但自從進入校園以後,對於軟體開發應用工具的涉獵持續了約莫一年的空白狀態。
日前因為公司同事的input, 看到了Maven這個工具,真的有些驚豔之感!
簡而言之,它是Apache 的Open Source 專案拿來管理專案的軟體。由於Apache開發的專案算是規模不小,加上要統合分散於世界各地的自由軟體開發人員並非易事,累積在專案管理上的Know how自是不含糊。由這些Know how集成所誕生的軟體就是Maven。
到底 Maven有什麼特別的地方呢? 先來看看沒有 Maven 之前我們是怎麼做事的…
如果你用過 Ant,那你一定不陌生其中的運作流程,它可以compile, test, deploy專案,以及幫忙做其它拉拉雜雜的事。Ant當時之所以成為一顆閃亮的星星,是因為它把在作業系統上一的些操作抽象化出來:比如拷貝、刪除檔案、下javac compile, 在Junit 的framework下跑testcase 等等,變成單單靠設定XML檔加上超級簡單的指令 - ant (或再加上task)即可運作得清潔溜溜。
Maven之所以令人驚豔之處則是,它抽象化了專案開發中更高階的邏輯,你需要做的事情是,設定3rd Party或其它內部專案與你的專案的相依性及一些必要的屬性; 加上指定 test, compile, package, install等等"Phase"裏應該做的事之後,即可簡單俐落的運作。(上述阿里阿咂在Maven的術語中叫做Project Object Management. 是Maven的Heart and Soul~(笑))。如果還有其它配合的工具:比如Archiva, Continuum...等等,即可以做到真正自動化的Repository Management及持續性整合(Continuous Integration)
好吧,說完好話之後,也要反過來看看,Maven的一些缺點:
(1) 要理解它所抽象化出來的專案開發邏輯,有一定的門檻
(2) 許多配合的應用工具,甚至都沒有到1.0版XD
(3) 它的設定蠻煩的
要用Maven管理專案的時候,要想好你的專案需要的是什麼?要怎麼規劃最適合團隊的流程?這是最重要的地方。這也是將問題(1) 打通之後才能做得好的事。
(2), (3) 則是要靠人的測試了,有時(2)會反過來影響流程的設計, (畢竟穩定的開發工具才是開發團隊之福。)而(3)...久久才設定一次,雖然那一次足以令人吐血,不過設定得好的話,大家都會用得笑哈哈~(不過私以為應該可以寫一個wizard讓設定這碼子事變簡單些)
不過雖然說了一缸子的Maven好,要補上一點,敝人還是堅持,能用shell簡單做的事,不輕易用Ant, 能用Ant簡單做的事,不輕易用Maven。這是懶人的偏見和堅持,沒有什麼理論基礎就是了
1 則留言:
最後綠色的這句真令人佩服,贊成。
張貼留言