第10章 從Maven2中運行JUnit測試
10.1 Maven的功能
Maven不只僅是一個構建工具,如下是Maven的一些核心原則。
10.1.1 約定優於配置
約定優於配置(Convention over configuration)是Maven項目最強大的原則之一。
![](http://static.javashuo.com/static/loading.gif)
10.1.2 強大的依賴管理
Maven經過中心倉庫來存儲、管理依賴,本地工程經過本地倉庫與中心庫下載各類依賴。
![](http://static.javashuo.com/static/loading.gif)
10.1.3 Maven的構建生命週期
Maven另外一條強大原則是
構建生命週期(build lifecycle)。
3個內置生命週期:
Default:用於生成項目的工做。
Clean:用於清理項目。
Site:用於生成項目的文檔。
每一個生命週期都包含了幾個階段(phase),
在Default生命週期的全部階段以下:
Validate:驗證項目是正確的,而且全部必要的信息都是可得到的。
Compile:編譯項目的源代碼。
Test:使用一個合適的單元測試框架來測試編譯好的源代碼。這些測試應該不會要求代碼被打包或部署。
Package:將編譯好的代碼打包成能夠發佈的格式,如JAR。
Integration test:若是有必要,將發佈包處理和部署到一個能夠運行集成測試的環境中。
Verify:運行任何檢查來證明該發佈包是有效的並符合質量標準的。
Install:將發佈包安裝到本地倉庫中,以便用做其餘本地項目中的一個依賴庫。
Deploy:在一個集成或者發佈環境,爲了與其餘的開發人員和項目進行共享,將最終版的發佈包複製到遠程倉庫中。
若是調用以上的任何一個,他們都會從最開始的validate運行,依次運行,直到你調用的那個。好比,mvn test,會依次運行validate、compile、test。
10.1.4 基於插件的架構
Maven是一個基於插件的框架,它的功能都要插件去完成。(固然,核心的插件安裝Maven時會一塊兒安裝)
<build>
<plugins>
<plugin>
<groupId>org.apache.cactus</groupId>
<artifactId>cactus.integration.maven2</artifactId>
<version>1.8.1-SNAPSHOT</version>
</plugin>
</plugins>
</build>
|
10.1.5 Maven項目對象模型
Maven配置文件pom.xml,取自於Project Object Model的簡寫。
簡單的pom.xml
![](http://static.javashuo.com/static/loading.gif)
pom.xml是能夠繼承的,下面是一個父項目的配置(
注意packaging的類型),包含一個子模塊example-module(
目錄名,而不是artifactId):
![](http://static.javashuo.com/static/loading.gif)
下面是子模塊的pom.xml,它繼承了上面的pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.manning.junitbook</groupId>
<artifactId>example-pom</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<artifactId>example-child
</artifactId>
</project>
pom能從父pom繼承全部的元素:
包括依賴庫、開發者和貢獻者、插件列表、報告列表、ID匹配的插件執行、插件配置
10.2 創建一個Maven項目
安裝Maven
一、下載,解壓到一個目錄下
二、定義環境變量M2_HOME,指向解壓目錄
三、將M2_HOME\bin 添加到 PATH 中
Maven配置文件settings.xml
settings.xml默認在M2_HOME\conf錄入下,將它copy一個到的配置用戶目錄的.m2目錄下,在個人本機是這裏:「C:\Users\Neil\.m2」
而後打開它,在settings下加入,指定本地庫的目錄。
<localRepository>D:\maven_repo</localRepository>
固然也能夠作其餘設置,好比設置Nexus私服等,使得你本地全部的項目均可以使用這個私服。
用命令行創建Maven項目
用命令行進入咱們的工做目錄,而後執行如下命令:
mvn archetype:create -DgroupId=com.manning.junitbook -DartifactId=maven-sampling -DarchetypeArtifactid=maven-artifact-mojo
這個命令會依賴maven-archetype-plugin插件,若是沒有會自動下載,下載完成後自動執行命令,建立Maven示例項目。
固然這是經過命令行創建的,咱們須要把它導入Eclipse,才能在IDE裏寫代碼,以下圖:
![](http://static.javashuo.com/static/loading.gif)
固然這還有個前提,就是安裝m2e
安裝m2e插件,若是你用的是標準的JavaEE Eclipse(即已有WTP),請安裝以下圖版本:
![](http://static.javashuo.com/static/loading.gif)
在Eclipse裏建立Maven項目
這個Step by Step 就行了 不廢話了。
![](http://static.javashuo.com/static/loading.gif)
設置m2e
在Eclipse菜單選擇Windows->Preferences->Maven
![](http://static.javashuo.com/static/loading.gif)
在Maven->Installations 默認使用Eclipse自帶的maven,這裏能夠設置使用本身的maven。
![](http://static.javashuo.com/static/loading.gif)
在Maven->User Settings設置使用哪一個Maven配置文件和本地庫路徑
![](http://static.javashuo.com/static/loading.gif)
m2e功能介紹
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
pom.xml介紹
上面介紹了約定大於配置、Maven項目目錄結構、各類安裝配置,下面還剩一個pom.xml,介紹一下。
前面介紹了
Maven項目對象模型,而pom.xml就是描述了這個模型
書裏提到的其餘東西:
將項目eclipse話,主要是生成兩個eclipse配置文件.project 和 .classpath
mvn eclipse:eclipse -DdownloadSources=true
生成項目的站點文檔
mvn site
10.3 Maven插件的引入
mvn clean
使用maven-clean-plugin插件,將會清理以前對項目的各類操做,好比清理target目錄。
10.3.1 Maven的Compiler插件
mvn compile
使用maven-compiler-plugin插件,編譯代碼。須要的配置以下:
<
build
>
<
plugins
>
<
plugin
>
<
groupId
>
org.apache.maven.plugins
</
groupId
>
<
artifactId
>
maven-compiler-plugin
</
artifactId
>
<
version
>
2.0
</
version
>
<
configuration
>
<
source
>
1.5
</
source
>
<
target
>
1.5
</
target
>
</
configuration
>
</
plugin
>
</
plugins
>
</
build
>
|
在上面的附件pom.xml中好像沒有這段,其實它是繼承了父pom的配置,因此自身就不須要配置了,除非它改變了設置。
10.3.2 Maven的Surefire插件
mvn clean test
使用maven-surefire-plugin插件,來執行單元測試。若是你只想執行某些測試,能夠經過配置統配的形式來設置:
<
build
>
<
plugins
>
<
plugin
>
<
artifactId
>
maven-surefire-plugin
</
artifactId
>
<
version
>
2.5
</
version
>
<
configuration
>
<
includes
>
<
include
>
**/*Test*.java
</
include
>
</
includes
>
</
configuration
>
</
plugin
>
</
plugins
>
</
build
>
|
同compile的配置同樣,上面的pom.xml繼承了父pom的設置。
10.3.3 使用Maven生成HTML格式的JUnit報告
mvn surefire-report:report
使用maven-surefire-report-plugin插件,能夠生成測試報告,配置以下:
<
build
>
<
plugins>
<
plugin
>
<
groupId
>
org.apache.maven.plugins
</
groupId
>
<
artifactId
>
maven-surefire-report-plugin
</
artifactId
>
<
version
>
2.5
</
version
>
</
plugin
>
</
plugins
>
</
build
>
|
10.4 Maven的不足
Maven的不足也就是Ant的長處,Ant只是一個構建工具,你能夠按任意的方式去作,而用Maven就必須按照Maven的約定去作,優勢也是缺點吧。