爲何要用Maven?

    早期還在學怎麼用Ant構建項目時,就有看到說Maven是Ant的替代品,但真正意義去了解Maven,仍是由於之前的公司一老員工在作OpenJMS二次開發時,從網上下載了源碼,而後用Maven構建它。

當時跟他還由於這個產生了分歧,緣由就是在本人看來,eclipse的功能已經很是強大,建立項目、編譯、打包、導出、發佈,這些功能eclipse都能作,爲何還要用一個學起來有點複雜,用起來也不是很方便的工具?

說說最近遇到幾個現象:

一、之前要想在eclipse裏用Maven功能都是要額外裝m2eclipse插件,可是從eclipse4.4(代號Luna,2014年推出)開始,maven成了它的標準插件,從官網下載下來的eclipse就已經自帶Maven功能

二、SpringFramework官網,再也不提供Spring的jar包下載連接,而是隻提供了Maven倉庫配置信息。

三、在github網站裏,不少流行的框架,其源碼根目錄下都有一個pom.xml的文件,也就是說默認都是用Maven來構建項目。

四、在建行這邊開發的項目,基本都是用Maven來構建,雖然開發的電腦不能聯外網,但建行內部用Nexus本身搭建了一個Maven倉庫。

五、一同窗,他在惠普里作的項目也是用Maven構建,也是內部自建Maven倉庫。

這些種種跡象說明了Maven已經成爲一個標杆,就算如今暫時沒用它,但也不得不去了解它。

由於Maven功能不少,因此看起來會以爲很複雜,天然會以爲學起來難度比較大。這也就讓不少本來想學習用Maven作項目構建的人,望而卻步。

因此到底用,仍是不用,這須要一些權衡判斷,所謂工具,就是提供了一些自動化的功能,用它的時候會很方便,不用的話就什麼都得本身手動操做。

總結一下Maven能夠用上的幾種場景

一、建立項目,自動關聯和下載依賴的jar包。html

用Eclipse新建項目時,建立的只是一個空的項目,若是要加入其餘框架的功能須要手動導入jar包。通常的處理方法,就是到對應的官網下載相應的jar包。這時候會存在一個疑惑,就是從官網下載下來的軟件包裏,包含了它全部功能的jar包,哪一些jar包有用,哪一些沒用,比較笨的辦法就是把全部jar包都扔到項目的lib裏面。這樣就形成整個項目體積龐大,增長了項目發佈的I/O流量,在開發測試時,服務啓動時間變長(Tomcat要在更多的jar包中去查找相應的類)。git

另一個問題就是各個jar包版本的問題,像不少框架都關聯了apache的commons-lang3,commons-logging等,但不一樣框架的版本,對應關聯的第三方jar包版本也不同。github

用Maven,就能夠很好的解決jar包關聯問題,好比要Struts框架,只需在pom.xml文件裏,添加如下配置apache

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-core</artifactId>
  <version>2.3.24.1</version>
</dependency>

Maven就自動的從倉庫中下載相應的jar包,導入到項目中,並且它還能自動傳遞依賴,也就是把struts相關的jar包也導入。tomcat

 

2.升級框架的版本
升級某個框架的版本,但殊不知道與它相關聯的哪幾個jar也須要跟着升級,和升級到哪一個版本。用法跟上面相似,只需把版本改一下就行。服務器

 

3.自動部署
項目部署到雲服務器時,整個過程全是手動部署,須要的步驟有:打開eclipse,編譯(若是代碼有更新的話),導出war包,上傳war包到雲服務器上,重啓tomcat。若是隻是幾臺服務器,這樣步驟還能接受,但若是有幾十臺,甚至上百臺服務器呢?框架

用Maven只需一個命令,就能夠把項目自動部署到遠程服務器上。eclipse

4.項目編譯打包導出maven

這個隨意一個IDE都能作到,因此若是要Maven作這件事,可能的場景,就是作沒有裝IDE的環境裏,好比在服務器端Linux環境下。工具

相關文章
相關標籤/搜索