Maven

                                                  Mavenjava

1. 什麼是Mavenweb

     乍一看,Maven看起來不少東西,但簡而言之,Maven試圖將模式應用於項目的構建基礎架構,以便經過提供使用最佳實踐的明確路徑來提升理解力和生產力。Maven本質上是一個項目管理和理解工具,所以提供了一種幫助管理的方法:架構

  • 構建
  • 文檔
  • 報告
  • 依賴
  • 供應鏈管理系統
  • 發佈
  • 分配

2.Maven的哲學

        Maven一般被許多人認爲是構建工具。不少來到Maven的人最初都熟悉Ant,因此它是一個天然的聯想,但Maven不只僅是一個構建工具,而不只僅是Ant的替代品。Maven與Ant徹底不一樣。Ant只是一個工具箱,而Maven則是關於模式的應用,以實現顯示可見性,可重用性,可維護性和可理解性的基礎結構。框架

 

        若是沒有這些特徵,多我的將頗有可能在項目上一塊兒高效地工做。沒有可見性,我的不太可能知道另外一我的已經完成了什麼,所以頗有可能有用的代碼不會被重用。若是不重用代碼,則很難建立可維護的系統。當每一個人都在不斷努力尋找構成項目的全部這些不一樣點點的地方時,任何人都很難理解整個項目。所以,您最終會遇到孤島效應,共享知識的衰退以及團隊成員之間相應程度的挫折感。當流程對每一個人都不以相同的方式工做時,這是一種天然的影響。maven

 

       

        Maven誕生於很是實際的願望,即以相同的方式在Apache工做。所以,開發人員能夠在這些項目之間自由移動,經過了解其中一個項目的工做方式,清楚地瞭解它們的工做原 若是開發人員花時間瞭解一個項目是如何構建它的,那麼當他們轉移到下一個項目時,他們就沒必要再次經歷這個過程。一樣的想法擴展到測試,生成文檔,生成指標和報告,測試和部署。全部項目都具備足夠的相同特徵,瞭解Maven試圖利用其通常的項目管理方法。在很高的層面上,全部項目都須要構建,測試,打包,記錄和部署。固然,上述每一個步驟都有無限的變化,可是這種變化仍然發生在明肯定義的路徑的範圍內,而Maven試圖以明確的方式向每一個人呈現這條路徑。明確路徑的最簡單方法是爲人們提供一組模式,這些模式能夠由項目中的任何人共享。工具

 

拉爾夫·約翰遜和唐·羅伯茨在「進化框架模式」中最喜歡的一句話:性能

      人們經過從具體例子中歸納出來來發展抽象。在沒有實際開發運行系統的狀況下,每次嘗試在紙上肯定正確的抽象都是註定要失敗的。沒有人那麼聰明。框架是一種可重用的設計,所以您能夠經過查看它應該是設計的東西來開發它。您看到的示例越多,您的框架就越通用。測試

我真的不知道最終的結果是什麼樣的,我只知道必須有更好的方法。但首先我知道我想:spa

  • 項目的模型,以便您能夠在一個地方查找與項目相關的全部內容
  • 一個標準的目錄結構,因此你沒必要去尋找圖書館,資源和文檔

 

 其實上面的都是官方語言,對我這種理解能力不強的人其實舉例子更合適
設計

   假如你正在Eclipse下開發兩個Java項目,姑且把它們稱爲A、B,其中A項目中的一些功能依賴於B項目中的某些類,那麼如何維繫這種依賴關係的呢?

   很簡單,這不就是跟咱們以前寫程序時同樣嗎,須要用哪一個項目中的哪些類,也就是用別人寫好了的功能代碼,導入jar包便可。因此這裏也如此,能夠將B項目打成jar包,而後在A項目的Library下導入B的jar文件,這樣,A項目就能夠調用B項目中的某些類了。

   這樣作幾種缺陷,若是在開發過程當中,發現B中的bug,則必須將B項目修改好,並從新將B打包並對A項目進行重編譯操做,在完成A項目的開發後,爲了保證A的正常運行,就須要依賴B(就像在使用某個jar包時必須依賴另一個jar同樣),兩種解決方案,第一種,選擇將B打包入A中,第二種,將B也發佈出去,等別人須要用A時,告訴開發者,想要用A就必須在導入Bjar包。兩個都很麻煩,前者可能形成資源的浪費(好比,開發者可能正在開發依賴B的其它項目,B已經存儲到本地了,在導入A的jar包的話,就有了兩個B的jar),後者是咱們常遇到的,找各類jar包,很是麻煩(有了maven就不同了)

 

    咱們開發一個項目,或者作一個小demo,好比用SSH框架,那麼咱們就必須將SSH框架所用的幾十個依賴的jar包依次找出來並手動導入,超級繁瑣。 

   上面兩個問題的描述,其實都屬於項目與項目之間依賴的問題[A項目使用SSH的全部jar,就說A項目依賴SSH],人爲手動的去解決,很繁瑣,也不方便,因此使用maven來幫咱們管理

          

         Maven的核心功能即是合理敘述項目間的依賴關係,通俗點講,就是經過pom.xml文件的配置獲取jar包,而不用手動去添加jar包,而這裏pom.xml文件對於學了一點maven的人來講,就有些熟悉了,怎麼經過pom.xml的配置就能夠獲取到jar包呢?pom.xml配置文件從何而來?等等相似問題咱們須要搞清楚,若是須要使用pom.xml來獲取jar包,那麼首先該項目就必須爲maven項目,maven項目能夠這樣去想,就是在java項目和web項目的上面包裹了一層maven,本質上java項目仍是java項目,web項目仍是web項目,可是包裹了maven以後,就可使用maven提供的一些功能了(經過pom.xml添加jar包)。

 

  因此,根據上一段的描述,咱們最終的目的就是學會如何在pom.xml中配置獲取到咱們想要的jar包,在此以前咱們就必須瞭解如何建立maven項目,maven項目的結構是怎樣,與普通java,web項目的區別在哪裏,還有如何配置pom.xml獲取到對應的jar包等等

 

              pom.xml獲取junit的jar包的編寫

 

 

爲何經過groupId、artifactId、version三個屬性就能定位一個jar包?

 

    加入上面的pom.xml文件屬於A項目,那麼A項目確定是一個maven項目,經過上面這三個屬性可以找到junit對應版本的jar包,那麼junit項目確定也是一個maven項目,junit的maven項目中的pom.xml文件就會有三個標識符,好比像下圖這樣,而後別的maven項目就能經過這三個屬性來找到junit項目的jar包了。因此,在每一個建立的maven項目時都會要求寫上這三個屬性值的。

 

 

 

           看完上面這些再看看我繪製的圖,估計能理解個八九不離十:

 

相關文章
相關標籤/搜索