Maven 2 的優點,開源的還是maven吧

          附錄 A. 需要搞清楚幾個問題
          A.1. Maven2的優點
            1.
            對第三方依賴庫進行統一的版本管理。
            只要用了Maven2就不用再為每個項目復制spring.jar和hibernate.jar了,Maven2會在你需要的時候,自動把這些第三方依賴庫找到,你需要編譯,Maven2就把這些jar包放到classpath里,你需要打包,Maven2就幫你把需要的jar包都復制到WEB- INF/lib/目錄下。
            2.
            統一項目的目錄結構。
            可以保證所有項目的目錄結構都是一樣的,目錄結構統一的好處就是,你要找源代碼就去src/main/java/下,你要找需要放到classpath下的資源,就去src/main/resources/下,你要找單元測試對應的代碼和資源,就去src/test/下。每個目錄下放什么東西,程序編譯,發布的時候,每個目錄起什么作用都很清楚明了,不會出現打開項目找不到要找的文件的情況。
            3.
            統一軟件構建階段
            Maven2把軟件開發的過程劃分成了幾個經典階段,比如你先要生成一些java代碼,再把這些代碼復制到特定位置,然后編譯代碼,復制需要放到 classpath下的資源,再進行單元測試,單元測試都通過了才能進行打包,發布。
            以前使用Ant,最令人頭疼的就是要為不同的項目寫很多build.xml腳本,而且這些腳本還不太通用,現在我們可以使用Maven2提供的這些經典構建階段,讓每個項目就經過相同的步驟,從源代碼一步一步變成可以部署的成品。如果想要什么附加功能,把對應的插件綁定到一個構建階段上,那么到了執行這個構建階段的時候,就會執行綁定的插件了。
            4.
            支持多種插件
            在http://maven.apache.com/和http://mojo.codehaus.org/上可以找到大量的Maven2插件,通過這些插件可以完成多種多樣的擴展功能。
            不過,如果比插件的易用性,Ant的插件實際上更簡單方便,與之相比,在Maven2中配置插件的步驟太復雜了,既要配置groupId和 artifactId,還要配置綁定在哪個階段運行。
            不過因為Maven2可以把插件連同第三方依賴一起進行統一版本管理,所以這方面也算比Ant有一點兒優勢,至少使用時不需要自己再去下載插件的發布包了。
            5.
            自動生成項目網站和報表
            如果說Ant可以使用ivy實現第三方依賴庫的統一管理,如果說Ant可以自己統一項目的目錄結果,如果說Ant支持插件更靈活,那么這個特性絕對是 Ant無法比擬的。
            Maven2 可以自動為項目生成一個網站,里面包含了項目信息,參與人,項目管理相關的資源,第三方依賴庫,使用的插件,以及通過其他擴展插件生成的各種報表。Ant 使用某些插件也可以生成html格式的報表,但是各個報表之間都沒什么關聯,不像Maven2中將網站和報表都關聯在一起,查看起來十分方便。
          A.2. Maven2的問題
            1.
            Maven2使用前需要像Ant一樣需要配置環境變量。
            本來綠色安裝是一件好事,但是因為太多人都只會用IDE,不了解如何配置環境變量,所以這第一步就很成問題。
            2.
            Maven- 2.1.0本身只有2.844M,可是這只是一個核心,實際使用時,還需要去公網上的資源庫下載各種插件,然后才能實現各種功能,問題是公網上的資源庫一般都是在國外,網路速度稍慢就無法完成下載,沒法下載就沒法使用Maven2里提供的那些功能,Maven2就用不起來。
            尤其對于新手來說,第一次下載插件的過程,實在是太痛苦了,大多數人都在這一階段放棄了對Maven2的嘗試。
            3.
            第三方依賴庫版本混亂。
            java的依賴庫管理一直沒有約定規范,導致多個項目,引用多個第三方依賴,這些第三方依賴又使用同一個項目的不同版本的發布包,最后就是弄得一團糟。
            Maven2 嘗試通過一些約定解決這個版本混亂的問題,但實際上并沒有達到預想中的效果。例如,commons.apache.org中的項目,本來應該放在 org/apache/commons/目錄下,現在卻都各自放在commons-logging,commons-lang,commons- beanutils目錄下,估計這是因為剛開始使用Maven2的那些人,懶得把常用包放到那么深的目錄結構中,偷懶放到了頂級目錄下??呻S著 Maven2的發展,加入資源庫的包越來越多,他們又把新發布的依賴包按照正常的方式,放到了org/apache/commons/目錄下,而舊依賴還有很多人在用,所以也不能刪除,這就造成了現在這種一種依賴庫多種存放形式的問題。
            每次在資源庫上找依賴都要花費很多時間,因為你不清楚它究竟使用的哪種目錄形式,比如sourceforge.net上的項目就有兩種目錄形式,一些項目放在net/sf /目錄下,而另一些例子放在net/sourceforge/目錄下,所以你就算知道項目的網站地址,也要在多個目錄下都找一遍。
            4.
            缺乏詳細的教程
            入門教程一般都很簡略,現在似乎使用的人多了起來,可以在網上找到一些新手教程,但是一般都很簡略,只能自己玩玩,實際中遇到問題的話,還是很難解決。
            實際上Maven2的教程一直是一塊短板,就算是國外的兩本書《Maven: The Definitive Guide 》和《Better Build With Maven》也沒有涉及到富含價值高級技術。
            就算是講的比較詳細的Maven2教程,也都是停留在Maven2本身的使用上,或者稍微提及一下使用到得官方插件,對于很多強力的擴展插件都沒有介紹。
            至今很多人用Maven2都處在摸索階段,沒看到誰總結出使用Maven2最佳實踐。這點上,一般都是把國外開源項目中的pom.xml拿來研究學習。
            5.
            資源庫不完整
            一般來說,我們可以從Maven2的資源庫上下載到我們所需要的第三方依賴庫,但是有些依賴庫在Maven2的資源庫上是找不到的。
            其中有因為發布協議的限制,比如j2ee的一些規范api。有因為項目所在廠商的原因,比如jbpm。有因為項目社區的問題,比如birt。還有很多情況是因為Maven2官方處理事情太慢,很多小型開源項目,比如dozer,雖然兩個月前就已經提出了最新版本的上傳申請,但是遲遲沒有給予答復。
            在這種情況下,我們只能自己在本地資源庫中安裝需要的依賴了,造成的問題是,如果相關的項目使用了Maven2的項目管理文件,那么可以使用Maven2 將項目發布到本地庫中,這樣一來就可以獲得項目自身的依賴設置。如果相關項目沒有使用Maven2的項目管理文件,那么需要自己再去為這個項目找到所需要的依賴,并配置到對應的pom文件中,著實非常麻煩。
            6.
            Maven2沒有IDE支持
            沒有良好的IDE支持也是個大問題,雖然說有m2eclipse,但是實際上似乎沒那么易用。
            本身我們沒有使用m2eclipse,而是使用maven2 + editplus的組合,不過介于廣大開發者還是要用eclipse的,所以稍后我們還是會討論到m2eclipse的相關知識。

          posted on 2010-06-04 15:49 simplelove 閱讀(5587) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大余县| 富平县| 外汇| 大冶市| 双鸭山市| 读书| 高淳县| 雷山县| 永福县| 嵊州市| 马山县| 汝州市| 田阳县| 湘阴县| 定南县| 甘南县| 陵水| 丹凤县| 会同县| 寿宁县| 闸北区| 财经| 海口市| 高阳县| 梁平县| 乌海市| 临夏市| 九台市| 奇台县| 邢台市| 丽江市| 绍兴县| 横山县| 兴文县| 乌恰县| 新乡市| 星子县| 福安市| 岳阳市| 博兴县| 新乡县|