讀古今文學網 > Maven實戰 > 1.4 被誤解的Maven >

1.4 被誤解的Maven

C++之父Bjarne Stroustrup說過一句話:「只有兩類計算機語言,一類語言天天被人罵,還有一類沒人用。」當然這話也不全對,大紅大紫的Ruby不僅有人用,而且罵的人也少。用戶最多的Java得到的罵聲就不絕於耳了。Maven的用戶也不少,它的郵件列表目前在Apache項目中排名第4(http://www.nabble.com/Apache-f 90.html)。

讓我們看看Maven受到了哪些質疑,筆者將對這些質疑逐一解釋。

「Maven對於IDE(如Eclipse和IDEA)的支持較差,bug多,而且不穩定。」

相對於JUnit和Ant來說,Maven比較年輕,IDE集成等衍生產品還不夠全面和成熟。但是,我們一定要知道,使用Maven最高效的方式永遠是命令行,IDE在自動化構建方面有天生的缺陷。此外,Eclipse的Maven插件——m2eclipse是一個比較優秀和成熟的工具,NetBeans也在積極地為更好地集成Maven而努力,自IntelliJ IDEA開源後,也有望看到其對Maven更好的集成。

「Maven採用了一個糟糕的插件系統來執行構建,新的、破損的插件會讓你的構建莫名其妙地失敗。」

自Maven 2.0.9開始,所有核心的插件都設定了穩定版本,這意味著日常使用Maven時幾乎不會受到不穩定插件的影響。此外,Maven社區也提倡為你使用的任何插件設定穩定的版本。如果我們有好的實踐不採納,遇到了問題就抱怨,未免不夠公允。從Maven 3開始,如果你使用插件時未設定版本,會看到警告信息。

「Maven過於複雜,它就是構建系統的EJB 2。」

不要指望Maven十分簡單,這幾乎是不可能的。Maven是用來管理項目的,清理、編譯、測試、打包、發佈,以及一些自定義的過程本身就是一件複雜的事情。目前在Java社區還有比Maven更強大、更簡單的構建工具嗎?答案是否定的。我們可以嘗試去幫助Maven讓它變得更簡單,而不是拋棄它,然後自己實現一套更加複雜的構建系統。

「Maven的倉庫十分混亂,當無法從倉庫中得到需要的類庫時,我需要手工下載複製到本地倉庫中。」

Maven的中央倉庫確實不完美,你也許會發現某個jar包出現在兩個不同的路徑下。這不是Maven的錯,這是開源項目本身改變了自身的坐標。如果沒有中央倉庫,你將不得不去開源項目首頁尋找下載鏈接,這不是更費事嗎?現在有很多的Maven倉庫搜索服務。無法從中央倉庫找到你需要的類庫?由於許可證等因素,這是完全有可能的,這時你需要做的是建立一個組織內部的倉庫服務器,你會發現這會給你帶來許多意想不到的好處。

「缺乏文檔是理解和使用Maven的一個主要障礙!」

這是事實。Maven官方站點的文檔十分凌亂,各種插件的文檔更是需要費力尋找。Sonatype編寫的《Maven權威指南》很好地改善了這一狀況,但由於該書的某些部分與國內的現狀有些脫離,且翻譯速度無法跟上原版的更新速度,於是筆者編寫本書,目的也是幫助大家理解和使用Maven。