項目管理利器-Maven倉庫及Maven常用命令講解

本篇文章主要內(nèi)容:
倉庫
Maven的生命周期
Maven的常用命令
練習maven?命令
倉庫的概念
現(xiàn)在我們對maven工程有一個大概的認識了,那現(xiàn)在思考一個問題, maven怎么就這么神奇,我們寫完的工程交給他之后,他就能夠自動幫我們管理,我們依賴的jar包它從哪兒獲取呢?
有同學說已經(jīng)安裝了,在它的安裝包里啊,大家可以看一下maven下載下來才8M,我們需要的jar包有時候都幾百兆甚至幾個G,它從哪兒弄去呢?其實,maven有倉庫的概念。
在Maven中,任何一個依賴、插件或者項目構(gòu)建的輸出,都可以稱之為構(gòu)件。Maven核心程序僅僅定義了自動化構(gòu)建項目的生命周期,但具體的構(gòu)建工作是由特定的構(gòu)件完成的。而且為了提高構(gòu)建的效率和構(gòu)件復用,maven把所有的構(gòu)件統(tǒng)一存儲在某一個位置,這個位置就叫做倉庫。
倉庫存什么?
倉庫是存放東西的,Maven 倉庫的是:
1. Maven 的插件,插件也是一些jar,這些 jar 可以完成一定的功能。
2.我們自己開發(fā)項目的模塊
3.?第三方框架或工具的 jar 包
倉庫的類別
根據(jù)倉庫存儲的位置,把倉庫分為本地倉庫和遠程倉庫。
本地倉庫:
存在于當前電腦上,默認存放在~\.m2\repository中,為本機上所有的Maven工程服務。你也可以通過Maven的配置文件Maven_home/conf/settings.xml中修改本地倉庫所在的目錄。~ 是用戶的主目錄,windows系統(tǒng)中是 c:/user/登錄系統(tǒng)的用戶名
遠程倉庫:
分為為全世界范圍內(nèi)的開發(fā)人員提供服務的中央倉庫、為全世界范圍內(nèi)某些特定的用戶提供服務的中央倉庫鏡像、為本公司提供服務自己架設的私服。中央倉庫是maven默認的遠程倉庫,其地址是:http://repo.maven.apache.org/maven2/
中央倉庫包含了絕大多數(shù)流行的開源Java構(gòu)件,以及源碼、作者信息、許可證信息等。一般來說,簡單的Java項目依賴的構(gòu)件都可以在這里下載得到。
私服是一種特殊的遠程倉庫,它是架設在局域網(wǎng)內(nèi)的倉庫服務,私服代理廣域網(wǎng)上的遠程倉庫,供局域網(wǎng)內(nèi)的Maven用戶使用。當Maven需要下載構(gòu)件的時候,它從私服請求,如果私服上不存在該構(gòu)件,則從外部的遠程倉庫下載, 緩存在私服上之后,再為Maven的下載請求提供服務。我們還可以把一些無法從外部倉庫下載到的構(gòu)件上傳到私服上。
分類說明:
1)?本地倉庫:本機當前電腦上的資源存儲位置,為本機上所有 Maven工程提供服務
2)?遠程倉庫:不在本機上, 通過網(wǎng)絡才能使用。多電腦共享使用的。
①:中央倉庫:通過Internet訪問,為全世界所有 Maven工程服務。 最權(quán)威的。
②:中央倉庫的鏡像:架設在不同位置,歐洲,美洲,亞洲等每個洲都有若干的服務器,為中央倉庫分擔流量。減輕中央倉庫的訪問,下載的壓力。所在洲的用戶首先訪問的是本洲的鏡像服務器。
③:私服:在局域網(wǎng)環(huán)境中部署的服務器,為當前局域網(wǎng)范圍內(nèi)的所有 Maven工程服務。公司中常常使用這種方式。

Maven?對倉庫的使用
在Maven 構(gòu)建項目的過程中如果需要某些插件,首先會到Maven 的本地倉庫中查找,如果找到則可以直接使用;如果找不到,它會自動連接外網(wǎng),到遠程中央倉庫中查找;如果遠程倉庫中能找到,則先把所需要的插件下載到本地倉庫,然后再使用,并且下次再用到相同的插件也可以直接使用本地倉庫的;如果沒有外網(wǎng)或者遠程倉庫中也找不到,則構(gòu)建失敗。
資源搜索地址:https://mvnrepository.com/
Maven?的生命周期
對項目的構(gòu)建是建立在生命周期模型上的,它明確定義項目生命周期各個階段,并且對于每一個階段提供相對應的命令,對開發(fā)者而言僅僅需要掌握一小堆的命令就可以完成項目各個階段的構(gòu)建工作。
構(gòu)建項目時按照生命周期順序構(gòu)建,每一個階段都有特定的插件來完成。不論現(xiàn)在要執(zhí)行生命周期中的哪個階段,都是從這個生命周期的最初階段開始的。
對于我們程序員而言,無論我們要進行哪個階段的構(gòu)建,直接執(zhí)行相應的命令即可,無需擔心它前邊階段是否構(gòu)建,Maven 都會自動構(gòu)建。這也就是Maven 這種自動化構(gòu)建工具給我們帶來的好處。
Maven?的常用命令
Maven 對所有的功能都提供相對應的命令,要想知道m(xù)aven 都有哪些命令,那要看maven 有哪些功能。
一開始就跟大家說了,maven 三大功能:管理依賴、構(gòu)建項目、管理項目信息。
管理依賴,只需要聲明就可以自動到倉庫下載;管理項目信息其實就是生成一個站點文檔,一個命令就可以解決,最后再說;那maven 功能的主體其實就是項目構(gòu)建。
Maven 提供一個項目構(gòu)建的模型,把編譯、測試、打包、部署等都對應成一個個的生命周期階段,并對每一個階段提供相應的命令,程序員只需要掌握一小堆命令,就可以完成項目的構(gòu)建過程。
mvn clean清理(會刪除原來編譯和測試的目錄,即target 目錄,但是已經(jīng)install 到倉庫里的包不會刪除)
mvn compile?編譯主程序(會在當前目錄下生成一個target,里邊存放編譯主程序之后生成的字節(jié)碼文件)
mvn test-compile編譯測試程序(會在當前目錄下生成一個target,里邊存放編譯測試程序之后生成的字節(jié)碼文件)
mvn test 測試(會生成一個目錄surefire-reports,保存測試結(jié)果) mvn package
打包主程序(會編譯、編譯測試、測試、并且按照pom.xml 配置把主程序打包生成jar 包或者 war 包)
mvn install 安裝主程序(會把本工程打包,并且按照本工程的坐標保存到本地倉庫中)
mvn deploy 部署主程序(會把本工程打包,按照本工程的坐標保存到本地庫中,并且還會保存到私服倉庫中。還會自動把項目部署到 web 容器中)。
注意:執(zhí)行以上命令必須在命令行進入pom.xml 所在目錄!
練習maven?命令
以第一個maven 項目為例,進入到Hello 目錄中執(zhí)行maven 各種命令。
1.?準備工作,pom.xml?添加依賴
<dependencies>
<!-- 單元測試 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
2.?在Hello/src/test/目錄下創(chuàng)建 java?, resources?目錄
3.?在Hello/src/test/java?目錄下,創(chuàng)建 com/bjpowernode/目錄
4.?在 com/bjpowernode/目錄中創(chuàng)建 MyTest.java?文件導入類:
import org.junit.Assert; import org.junit.Test;
定義方法
public class MyTest { @Test
public void testAddNumber(){
System.out.println("執(zhí)行HelloMaven 類addNumber()方法"); int n1 = 10;
int n2 = 20; int res = 0;
HelloMaven hello =new HelloMaven(); res = hello.addNumber(n1,n2);
// 期望值,實際值A(chǔ)ssert.assertEquals(30,res);
}
}
5.?執(zhí)行先執(zhí)行 mvn?compile?,觀察目錄結(jié)構(gòu)的變化,生成target?目錄6.在執(zhí)行 mvn?clean, 觀察taget?目錄被清除
7.?執(zhí)行 mvn?compile
8.?進入 taget/classes?目錄執(zhí)行 java?com.bjpowernode.HelloMaven
9.?進入Hello?目錄,執(zhí)行mvn?test-compile?生成test-target?測試編譯后的目錄
10.?進入Hello?目錄,執(zhí)行mvn?test?執(zhí)行 MyTest?類中方法,生成測試報告11.進入目錄 surefire-reports,查看測試報告
12.?修改 MyTest.java, 增加測試方法@Test
public void testAddNumber2(){
System.out.println("執(zhí)行HelloMaven?類addNumber()方法"); int n1 = 20;
int n2 =?30;
int res = 0;
HelloMaven hello =new HelloMaven(); res = hello.addNumber(n1,n2);
// 期望值,實際值A(chǔ)ssert.assertEquals(60,res);
}
13.?進入Hello?目錄,執(zhí)行mvn?test-compile
14.?進入Hello?目錄,執(zhí)行mvn?test
15.?修改testAddNumber2()方法中 60?為 50
16.?進入Hello?目錄,執(zhí)行mvn package?,生成 xxx.jar?文件,這就是所說的打包
17.?進入Hello?目錄,執(zhí)行mvn?install?, 把xxx.jar?文件安裝到本地maven 倉庫,安裝成功后查看倉庫中的jar?文件
最后奉上視頻教程??,視頻觀看效果更佳!!走過路過別忘素質(zhì)三連哦~~

