一、Maven簡介
Maven可譯為“知識的積累”、“專家”,主要服務於基於Java平臺的專案構建、依賴管理和專案資訊管理。
1、Maven—專案構建工具
幫助我們自動化構建過程,從清理、編譯、測試到生成報告,再到打包部署。我們需要做的是使用Maven配置好專案,然後輸入簡單的命令,Maven會幫我們處理上上述任務。譬如我們進行測試,只需要遵循Maven的約定編寫好測試用例,當我們執行構建的時候,這些測試便會自動進行。
Maven抽象了一個完整的構建生命週期模型,模型吸取了大量的其他構建指令碼和工具的優點,總結了大量專案的實際需求,Maven還幫我們標準化構建過程。
2、Maven—專案依賴管理和專案資訊管理工具
在這個開源時代,幾乎任何java應用都會借用一些第三方的開源類庫,這些類庫都可以通過依賴的方式引入到專案中來。隨著依賴的增多,版本不一致、衝突,依賴問題接踵而至。maven提供了一個優秀的解決方案,通過一個座標系統準確的定位每一個構件(artifact),也就是通過一組座標maven能夠找到任何一個Java類庫(如jar檔案)。
maven還幫我們管理各個專案資訊,專案描述、開發者列表、版本控制系統地址、許可證、缺陷管理系統地址等。maven還為Java開發者提供了一個免費的中央倉庫,幾乎可以找到任何的流行開源類庫,幫我們自動下載構建。
下載jar包:maven專案會有一個pom.xml檔案,在這個檔案中,新增相應配置,maven會自動幫我們下載相應jar包。<dependencies>結點裡,每配置一個 <dependency>
<groupId>org.springframework</groupId>專案名
<artifactId>spring-webmvc</artifactId>專案模組<version>3.0.5.RELEASE</version>專案版本
maven都會通過:專案名-專案模組-專案版本,在網際網路上的程式碼庫中下載相應jar包。
下載依賴:在maven的程式碼庫中,每一個jar包也有自己的pom.xml檔案,而這個檔案裡面也會有<dependency>配置,配置的jar包所依賴的其他jar包都會被maven自動下載下來。
二、Windows環境下Maven的安裝和配置
1、檢查JDK安裝
在安裝Maven之前,受限要確認已經正確安裝了JDK。Maven可以執行在JDK1.4及以上版本。
專案 |
要求 |
JDK |
Maven 3.3 要求 JDK 1.7 或以上 |
開啟Windows的命令列:
(1)執行echo %JAVA_HOME%命令,檢查環境變數是否指向了正確的JDK目錄
(2)執行java-version命令,嘗試執行java命令
如果無法執行java命令,或者無法找到JAVA_HOME環境變數,就需要檢查java是否安裝,或者環境變數是否設定正確。
2、下載maven
下載地址:http://maven.apache.org/download.cgi ;
大家可以根據專案需求,下載合適的maven版本。
3、本地安裝
將安裝檔案,解壓到指定的目錄中,如:D:\****\apache-maven-3.1.1 ;
設定環境變數,將maven安裝到作業系統環境中;
我的電腦->屬性->高階系統設定->環境變數 ,新建一個變數,名為MAVEN_HOME(可自定義),變數值為Maven的安裝目錄,如D:\****\apache-maven-3.1.1,點選確定。
接著在系統變數,找到Path變數,新增字串“%MAVEN_HOME%\bin”到系統Path變數末尾(注:多個值之間分號隔開),點選確定。
開啟Windows的命令列:
(1)執行echo %MAVEN_HOME%命令,檢查環境變數是否指向了正確的Maven目錄
(2)執行mvn-v命令,執行一條maven命令,檢查Windows是否能找到正確的mvn執行指令碼
三、建立Maven專案
以eclipse為例
File->New->Project,對話方塊中,選擇Maven下面的Maven Project,點選Next。
在彈出的對話方塊中,選擇預設(不要選擇create a sample Project,那樣我們就能使用Maven Archetype),點選Next,此時m2eclipse會提示我們選擇一個Archetype,這裡我們選擇一個Archetype,這裡選擇maven-archetype-quickstart,點選Next按鈕。
輸入groupId、artifactId、version、package。
groupId為程式包名,artifactId為程式名,至此,工程建立完成。
四、編寫POM
POM(Project object Model專案物件模型),定義了專案的基本資訊,用於描述專案如何構建,宣告專案依賴等。Maven專案的核心是pom.xml。
開啟pom.xml新增測試項依賴庫,配置工程,示例:
<?xml version="1.0"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.sogou.map</groupId> <artifactId>parent</artifactId> <version>2</version> </parent> <groupId>com.sogou.com</groupId> <artifactId>kubbo-nav</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>kubbo-nav</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>com.sogou.map</groupId> <artifactId>kubbo-all</artifactId> <version>0.8</version> </dependency> </dependencies> </project>
程式碼的第一行是XML頭,指定了該xml文件的版本和編碼方式。
緊接著是Project元素,Project是所有pom.xml的根元素,宣告瞭一些pom相關的名稱空間及xsd元素。
根元素下的第一個子元素,modelVersion指定了當前的pom模型的版本。
最重要的是包含groupId、artifactId、version的三行,定義了專案基本座標,在maven中,任何的jar、pom或者war都是以基於這些基本座標進行區分的。
a) groupId:定義了專案屬於哪個組,這個組往往和專案所在組織或者公司有關。
b) artifactId:定義了當前的maven專案在組中唯一的ID。
c) Version:指定了專案當前的版本。
Maven能讓專案物件模型最大程度的與程式碼相對獨立,解耦,很大程度避免Java程式碼和POM程式碼的專案影響。
Maven專案預設的主程式碼目錄是src/main/java,對應的預設測試程式碼目錄是src/test/java。
專案中,使用Junit進行單元測試,首先要為專案新增Junit依賴,修改專案的POM程式碼。
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
程式碼中新增了dependencies元素,該元素下可以包含多個dependency元素以宣告專案依賴。
這裡新增了一個依賴,groupId是junit,artifactId是junit,version是4.1.2。groupId、artifactId、version,是專案的基本座標,有了這段宣告,maven就能自動下載Junit-4.12.jar包。