maven基礎-maven的配置與基本使用
1. maven的兩大核心
1.1 依賴管理:對jar包的管理
1.2 專案構建:專案在編碼完成後,對專案進行編譯,測試,打包,部署等。
(如通過命令將web專案部署在tomcat中:進入到專案根目錄,輸入命令列 mvn tomcat:run)
2. maven安裝及配置
2.1 下載:http://maven.apache.org/download.cgi
2.2 解壓到本地磁碟(注意:解壓路徑不要帶中文,空格)
2.3 配置環境變數:
2.3.1 M2_HOME: maven安裝根路徑
2.3.2 新增PATH變數: %M2_HOME%/bin
(前提:因為maven由java開發,所以依賴jdk,要求安裝jdk,且配置JAVA_HOME環境變數)
2.3.3 測試安裝成功:
3. 倉庫型別及配置
3.1 倉庫型別:
如果,程式設計師本地電腦會有本地倉庫,如果某個工程需要test.jar的jar包,首先會先從本地倉庫找,如果找到則直接依賴。如果沒有,則判斷是否配置並連線了私服,如果連線了私服且私服中有jar包,則會從私服下載到本地倉庫,並依賴。如果未配置連線私服,則會連線中央倉庫,從中央倉庫下載到本地倉庫並依賴。
3.2 配置本地倉庫
那麼,我們的本地倉庫如何配置?
開啟maven根目錄/conf/setting.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!--本地存放路徑--> <localRepository>c:/maven/repository</localRepository>
<localRepository>標籤中配置的c:/maven/repository就是本地倉庫地址
4. maven的標準專案結構(後續介紹如何生成)
5. maven的常用命令(在專案根目錄下)
5.1 首先看一下一個maven基本專案的專案根目錄
5.2 mvn clean:會將專案根目錄下的target目錄幹掉,該目錄中包含有.class位元組碼檔案
5.3 mvn compile:編譯,重新生成target目錄,目錄中包含.class位元組碼檔案等
5.4 mvn test:執行根目錄下 src/test/java 目錄下所有XxxTest.java檔案中的單元測試方法。(注意:在此過程中,會執行complie操作)
5.5 mvn package:打包(生成jar包或war包) ,在target目錄下生成jar包或war包等。(注意:在此過程中,執行了compile和test操作)
5.6 mvn install:將專案進行打包,並放入本地倉庫,供其它專案使用。(注意:過程中,執行了test,compile和package操作)
6. maven專案生命週期
6.1 cleanLifeCycle:清理生命週期 clean
6.2 defaultLifeCycle: 預設生命週期 compile-test-package-install-deploy
6.3 siteLifeCycle: 站點生命週期 site
三套生命週期,每一套生命週期相互獨立,互不影響
7. maven整合Eclipse
7.1 windows-preference-maven-installations-add:新增本地安裝的maven版本
7.2 windows-preference-maven-userSettings :讓eclipse知道maven本地倉庫位置
8. 建立maven專案
9. jar包依賴範圍
如圖,我們有兩種方式檢視jar包的依賴範圍,配置檔案中,由<scope>標籤註明
共有5類:
compile: 編譯,測試,部署到tomcat都會依賴該jar包
test:僅測試時依賴該jar包
provided:編譯,測試時依賴該jar包
runtime:測試,編譯會依賴該jar包
system:編譯,測試會依賴該jar包
注:預設是compile(即不配置<scope>標籤時),常用的是compile和provided
舉例:如果我們的web專案中依賴servlet-api,jsp-api這兩個jar包,如果設成compile,那麼編譯測試以及部署到tomcat時都會依賴這兩個jar包,但是我們部署的tomcat自身也依賴了servlet-api和jsp-api這兩個jar包,此時部署時可能會產生衝突,導致執行失效。所以,這兩個jar包,我們一般會選擇provided。