Maven項目搭建(一):Maven初體驗

今天給你們介紹一個項目管理和綜合工具:Mavenjava

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,該配置文件針對系統全部用戶:

四、查看是否配置成功

 

目錄結構:

  • src/main/java-存放項目.java文件
  • src/main/resources-存放項目資源文件
  • src/test/java-存放測試類.java文件
  • src/test/resources-存放測試資源文件
  • target - 項目輸出目錄
  • pom.xml - Maven核心文件

MyEclipse提供了Maven4MyEclipse插件,已經內置安裝了Maven;但咱們一般使用本身下載配置的Maven,在Installations選項中添加咱們剛纔下載配置的Maven

新建一個 Maven Project:

選擇 workbench Location :

選擇 Maven Archetype(項目骨架),這裏咱們選擇 maven-archetype-webapp 

 

設置 Maven 相關參數,Group IdArtifact IdVersionPackage。它們共同組成 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框架。

相關文章
相關標籤/搜索