今天給你們介紹一個項目管理和綜合工具:Maven。java
Maven:程序員
maven讀做 ['meivin],本意是指能夠被信任的領域專家,致力於傳播知識(來自於http://en.wikipedia.org/wiki/Maven)。web
Maven是一個跨平臺的項目管理工具。來源於Apache的開源項目。主要服務於基於Java平臺的項目構建、依賴管理和項目信息管理。spring
Maven是一款優秀的構建工具apache
咱們一直在不停地需找避免重複的方法。設計的重複、編碼的重複、文檔的重複,固然還有構建的重複。Maven最大化的消除了構建的重複,抽象了構建生命週期,而且爲絕大部分的構建任務提供了已實現的插件,咱們不須要定義過程,甚至不須要再去實現這些過程當中的一些任務。api
Maven不只僅是構建工具服務器
maven不只是構建工具,仍是一個依賴管理工具和項目管理工具。app
依賴管理框架
幾乎任何Java應用都會借用一些第三方的開源類庫,這些類庫經過依賴的方式引入進項目。隨着依賴的增多,版本不一致、版本衝突、依賴臃腫等問題會接踵而來。Maven提供了一個優秀的解決方案,經過座標系統精肯定位每個構件(artifact)。eclipse
項目信息管理
maven把分散在各處的項目信息,包括項目描述、開發者列表、版本控制地址、許可證、缺陷管理系統地址等集中起來。Maven能夠把這些信息生成 一個站點,用於開源項目的發佈。經過一些插件,咱們還能夠輕鬆的得到項目文檔、測試報告、靜態分析報告、源碼版本日誌報告等有價值的項目信息。
中央倉庫
maven爲全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎能夠找到任何流行開源類庫。經過一些衍生搜索工具,肯定類庫座標後,Maven會幫咱們自動下載構建,省去手工勞動。
約定優於配置
Maven約定了項目目錄結構、測試用例命名方法等內容。只要遵循這些成熟的規則,用戶在項目間切換的時候救免去了額外的學習成本。
爲何選Maven
Maven不是Java領域的惟一解決方案,還有IDE,Ant等。
IDE不是萬能的
像Eclipse這類優秀的IDE大大的提升了開發效率,幾乎覆蓋開發須要的所有功能,包括代碼編輯、調試、重構、編譯。然而IDE仍是有不足的地方
IDE依賴大量的手工操做。
IDE存在差別性,每一個開發者都有本身個個性化配置。
Ant
Ant能夠當作一個Java版本的Make,也是一款很是優秀的構建工具。最先用於構建著名的Tomcat項目。可是Ant和Maven顯著的區別是,Ant是過程式的,Maven是聲明式的。Ant能夠理解爲一種由xml定義的可擴展腳本語言。Ant腳本能夠省去重複的勞動,Maven作得更絕, 能夠省去勞動。
Ant最大的缺陷是沒有依賴管理,須要藉助Ivy來解決依賴管理。經過Ivy,Ant能夠依賴Maven倉庫裏的構件,可是不了Maven原生實現的那麼方便,特別是對於依賴範圍的處理。
Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明肯定義的項目對象模型來描述你的項目,而後Maven能夠應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
首先,爲何有maven?構建是程序員天天要作的工做,並且至關長的時間花在了這上面,而maven使這系列的工做徹底自動化。 咱們一直在尋找避免重複的方法,設計的重複,文檔的重複,編碼的重複,構建的重複等,maven是跨平臺的,最大的消除了構建的重複。
maven的其餘優點:
1. maven不只是構建工具,它仍是依賴管理工具和項目管理工具,提供了中央倉庫,可以幫咱們自動下載構件。
2.爲了解決的依賴的增多,版本不一致,版本衝突,依賴臃腫等問題,它經過一個座標系統來精確地定位每個構件(artifact)。
3.還能幫助咱們分散在各個角落的項目信息,包括項目描述,開發者列表,版本控制系統,許可證,缺陷管理系統地址。
4.maven還爲全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎能夠找到任何的流行開源軟件。經過衍生工具(Nexus),咱們還能對其進行快速搜索
5.maven對於目錄結構有要求,約定優於配置,用戶在項目間切換就省去了學習成本。
Maven的特色:項目構建,依賴管理
一、一旦服務器上安裝maven,其中包含的repo資源庫能夠在任意工程中共享。Maven對所依賴的包有明確的定義,如使用那個包,版本是多少
二、依賴庫下載自動化。打開一個工程中Pom.xml,其中的dependency項中的groupID子項只要編寫好就可實現自動下載。Maven是基於中央倉庫的編譯,即把編譯所須要的資源放在一箇中央倉庫裏。當編譯的時候,maven會自動在倉庫中找到相應的包,若是本地倉庫沒有,則從設定好的遠程倉庫中下載到本地。
三、外部jar包安裝只需maven install--命令行實現,也可經過插件完成 打jar包也可直接使用命令行形式,也可經過插件完成。
下載及安裝:
1.下載最新版 Maven
下載地址 http://maven.apache.org/download.cgi
2.解壓下載的壓縮包
3.配置環境變量
配置環境變量(須要先配置好%JAVA_HOME%環境變量): 其餘配置(後面講到):settings.xml。
%MAVEN_HOME%/conf目錄下的settings.xml,該配置文件針對系統全部用戶:
四、查看是否配置成功
目錄結構:
MyEclipse提供了Maven4MyEclipse插件,已經內置安裝了Maven;但咱們一般使用本身下載配置的Maven,在Installations選項中添加咱們剛纔下載配置的Maven。
新建一個 Maven Project:
選擇 workbench Location :
選擇 Maven Archetype(項目骨架),這裏咱們選擇 maven-archetype-webapp
設置 Maven 相關參數,Group Id,Artifact Id,Version,Package。它們共同組成 Maven 的座標
這裏的groupId通常命名規範沿襲java包命名規範
項目建立成功以後,咱們看到 MyEclipse 默認只爲咱們建立了 src/main/resources,打開項目屬性 - Java Build Path,打開Libraries,編輯 JRE 環境,選擇本身安裝的JDK
這時,添加src/main/java文
設置 Project Facets。選擇 Java 1.7 版本和 Dynamic Web Module 3.0 版本
設置部署打包結構以下
打開pom.xml文件,咱們看到Maven已經爲咱們添加了JUnit3.8.1的依賴,這裏咱們改爲 JUnit 4.11,同時添加 Servlet-api 的依賴包
Maven已經提供大量相關jar包引用地址,可是有些jar包找不到,例如: com.springsource.net.sf.cglib-2.2.0.jar,
在maven默認的官方庫(http://repo.maven.apache.org/maven2 )沒有找到此jar,可是在http://repository.sonatype.org/content/groups/public/ 這個庫中有這個jar,所以在MyEclipse中添加這個庫便可。
在maven默認的官方庫(http://repo.maven.apache.org/maven2 )沒有找到此jar,可是在http://repository.sonatype.org/content/groups/public/ 這個庫中有這個jar,所以在eclipse中添加這個庫便可,以下:
若是有些jar包不肯定GroupId,下載地址,能夠在該網站下查詢:http://mvnrepository.com/
好了,Maven的初步介紹就先告一段落,下次咱們繼續分享如何使用Maven搭建目前最流行的SSM框架。