Maven實戰(zhàn)之初識Maven
Maven的簡單介紹
- 作用:Maven主要用于項目的構建歌焦,管理項目的依賴以及項目的信息(自動化構建、編譯砚哆、單元測試独撇、生成文檔、打包、部署)
- 優(yōu)勢:相對于Ant纷铣、Make等卵史,Maven抽象構建過程,提供構建任務的實現(xiàn)搜立,自動化構建以躯,有效地提高了開發(fā)效率,使開發(fā)人員可以集中精力在主要的開發(fā)任務上啄踊。而且Maven是跨平臺工具忧设,意味著在主流操作系統(tǒng)中,Maven都提供了對應的技術支持
- 使用注意:需要在JDK1.4及以上版本使用
Maven的安裝
下載地址:Maven下載地址 颠通,選擇最新版本的Binary文件即可址晕,這里使用的是最新的apache-maven-3.3.9-bin.zip
Windows平臺安裝
首先將下載下來的Maven文件解壓到一個文件中
-
然后配置環(huán)境變量(該步驟可省略,不過建議配上)
- 新建一個名為
M2_HOME
的變量顿锰,其值為剛剛解壓縮的maven文件谨垃,這里為E:\Program Files (x86)\apache-maven-3.3.9
如下所示
-
將
;%M2_HOME%/bin;
添加到PATH路徑中,如下所示:
- 新建一個名為
-
測試配置結果:
打開CMD窗口硼控,輸入
mvn -version
如果上面的配置正確刘陶,則可以看到對應的輸出信息,大致如下所示
Linux平臺的配置
Linux平臺的配置跟Windows平臺的配置基本一致淀歇,只是將Maven文件加入Path路徑的方式不同易核,這里就不做具體演示
Maven的簡單配置
為了更好地使用Maven匈织,這里對Maven進行簡單的配置
拷貝settting.xml 文件
在剛剛解壓的Maven文件中浪默,在conf目錄中有一個setting.xml,這是Maven的全局性設置文件缀匕,在該文件中的修改會影響到當前計算機的所有用戶纳决,一般情況下,推薦復制一份到家目錄的的.me文件夾之下乡小,windows的配置路徑為C:\Users\xuhuanfeng\.m2
設置代理
由于某些原因阔加,Maven使用過程中有時會出現(xiàn)無法連接到中央倉庫的情況,這個時候可以嘗試更換倉庫地址满钟,也可以選擇設置代理胜榔,這里使用的是設置代理的方式,設置方式為在<proxies>中增加一個<proxy>湃番,具體如下所示
<proxies>
<proxy>
<id>proxy</id><!--代理名稱-->
<active>true</active><!--選擇該代理-->
<protocol>http</protocol><!--代理協(xié)議-->
<host>127.0.0.1</host><!--代理服務器地址-->
<port>1080</port><!--代理端口-->
</proxy>
</proxies>
Maven_HelloWorld
搭建完Maven平臺之后夭织,我們就開始我們的Maven學習之旅,首先肯定是久負盛名的HelloWorld項目了
- 新建一個文件夾吠撮,命名為HelloWorld作為我們項目的根目錄
- 在HelloWorld目錄下編寫一個pom.xml文件尊惰,內(nèi)容如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--Maven2 / Maven3 固定寫法-->
<groupId>cn.xuhuanfeng.maven</groupId>
<!--groupId,可以近似當作公司/組織+項目名-->
<artifactId>HelloWorld</artifactId>
<!--artifactId,可以近似看做模塊名稱-->
<version>1.0-SNAPSHOT</version>
<!--當前版本號-->
<name>Maven_HelloWorld</name>
<!--項目的名稱弄屡,可以省略-->
</project>
- 在 HelloWorld文件中题禀,創(chuàng)建對應的Java類,對應的包路徑為 src/main/java/cn/xuhuanfeng/maven/HelloWorld.java膀捷,內(nèi)容如下
package cn.xuhuanfeng.maven;
/**
* Maven HelloWorld項目
*/
public class HelloWorld{
public String sayHello(){
return "Maven_HelloWorld";
}
-
使用CMD窗口進入到項目的根目錄迈嘹,也就是HelloWorld目錄下,執(zhí)行
mvn clean compile
全庸,輸入內(nèi)容如下
從上圖中可以看到江锨,HelloWorld項目已經(jīng)編譯成功了,其中的部分細節(jié)內(nèi)容糕篇,后續(xù)將補上啄育,這里可以暫時先不在意
在HelloWorld目錄中,會自動生成target目錄拌消,其中有一個名為classes文件夾挑豌,編譯好的class文件就存放在這里,類路徑跟包名一一對應,如下所示:
編寫測試用例
這里我們?yōu)镠elloWorld.java編寫對應的單元測試墩崩,并且交給Maven由其進行自動的測試
- 引入Junit依賴氓英,在pom.xml文件中,project元素下增加Junit依賴鹦筹,代碼如下:
<dependencies>
<dependency>
<!--引入Junit依賴-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
- 編寫測試類铝阐,在 HelloWorld文件中,創(chuàng)建對應的Java類铐拐,對應的包路徑為 src/test/java/cn/xuhuanfeng/maven/HelloWorldTest.java徘键,內(nèi)容如下
package cn.xuhuanfeng.maven;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
* 測試HelloWorld
*/
public class HelloWorldTest{
@Test
public void testHelloWorld(){
HelloWorld helloWorld = new HelloWorld();
String result = helloWorld.sayHello();
assertEquals("Maven_HelloWorld",result);
}
}
-
運行測試用例,執(zhí)行命令為
mvn clean test
遍蟋, 對應的結果如下所示:
從上圖中可以看到吹害,在執(zhí)行test之前,會對整個項目先進行compile虚青,從而保證始終得到最新版本的class文件它呀,并且,從圖中可以看到棒厘,Maven自動幫我們 運行測試樣例纵穿,并且返回樣例的結果。
文件路徑說明
Maven會自動編譯src/main/java目錄下的文件奢人,并且編譯谓媒,運行src/test/java目錄下的測試樣例,這也是我們將路徑命名如下的原因达传,同時篙耗,將測試代碼以及主代碼分開也是一種比較好的做法迫筑。
自動生成項目骨架
在上面中,我們手動編寫了一個基本的Maven項目宗弯,包括了配置pom.xml脯燃,HelloWorld.java以及對應的測試類,可能你會感覺到實際上使用Maven很麻煩蒙保,確實辕棚,如果按照上面那種做法,很繁瑣邓厕,所以Maven為我們提供了另一種機制逝嚎,可以通過配置archetype來生成對應的項目骨架,不過详恼,由于這里只是簡單的入門补君,所以我們直接使用Maven提供的archetype即可,通過命令mvn archetype:generate
就可以快速地生成一個項目的骨架昧互,具體過程如下所示:
中間會有很多內(nèi)容挽铁,主要是Maven從中央倉庫中拉取相關的信息,這里省略
然后可以看到熟悉的內(nèi)容敞掘,只需要在這里填入對應的groupId叽掘,artifactId,version玖雁,package等信息即可
最后生成的項目結果圖如下所示:
并且包含了Junit依賴以及一個簡單的測試樣式更扁,是不是很方便?
總結
在這一小節(jié)中赫冬,我們了解了關于Maven的一些基本知識浓镜,手動創(chuàng)建了一個Maven例子,HelloWorld面殖,并為其編寫測試樣例竖哩,通過Maven的構建插件以及測試插件,自動完成編譯脊僚、測試的工作,最后通過Maven的自動構建工具遵绰,構建一個簡單的項目骨架辽幌,Maven的學習之路還在繼續(xù)。
本節(jié)中主要用到的命令為
mvn clean compile
mvn clean test
mvn archetype:generate