maven快速入門
一、Maven 介紹
1戒良、啥是 maven 故硅?
????Maven是一個(gè)項(xiàng)目管理工具,它包含了這些邏輯:一個(gè)項(xiàng)目對(duì)象模型 (Project Object Model)滴肿,一組標(biāo)準(zhǔn)集合,一個(gè)項(xiàng)目生命周期(Project Lifecycle)佃迄,一個(gè)<u>依賴管理系統(tǒng)</u>(Dependency Management System)泼差,和用來(lái)運(yùn)行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)。當(dāng)你使用Maven的時(shí)候呵俏,你用一個(gè)明確定義的項(xiàng)目對(duì)象模型來(lái)描述你的項(xiàng)目堆缘,然后Maven可以應(yīng)用橫切的邏輯,這些邏輯來(lái)自一組共享的(或者自定義的)插件普碎。
Maven規(guī)范化構(gòu)建流程:
2吼肥、maven 能做啥?
????用 maven 對(duì)項(xiàng)目進(jìn)行管理随常,可以幫我們<u>構(gòu)建工程潜沦,管理jar包</u>,編譯代碼绪氛,減小工程占用的空間唆鸡,還能幫我們自動(dòng)運(yùn)行單元測(cè)試,打包枣察,生成報(bào)表争占,甚至部署項(xiàng)目等等
Maven依賴管理:
二燃逻、Maven 的使用
1、maven 的下載安裝與目錄結(jié)構(gòu)
a.下載:
????Maven官網(wǎng)下載
b.安裝:
????與普通軟件一樣臂痕,不要有特殊符號(hào)與空格
c.目錄結(jié)構(gòu):
maven 的目錄結(jié)構(gòu):
bin:存放了 maven 的命令
boot:存放了一些 maven 本身的引導(dǎo)程序伯襟,如類加載器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 本身運(yùn)行所需的一些 jar 包
至此我們的 maven 軟件就可以使用了握童,當(dāng)然了前提是你的電腦上之前已經(jīng)安裝并配置好了 JDK
2姆怪、maven 環(huán)境變量的配置與檢查
a.配置MAVEN_HOME:
配置MAVEN_HOME,變量值就是你的 maven安裝的路徑(bin目錄之前一級(jí)目錄)
添加到Path路徑
b.檢查Maven是否配置成功:
????打開(kāi) cmd ,輸入 mvn -v 若出現(xiàn) maven 的版本號(hào)澡绩,即安裝成功
3稽揭、maven 本地倉(cāng)庫(kù)的配置
????maven 的工作需要從倉(cāng)庫(kù)下載一些 jar 包,本地的項(xiàng)目都會(huì)通過(guò) maven 軟件從遠(yuǎn)程倉(cāng)庫(kù)(可以理解為互聯(lián)網(wǎng)上的倉(cāng)庫(kù))下載 jar 包并存在本地倉(cāng)庫(kù)肥卡,本地倉(cāng)庫(kù)就是本地文件夾溪掀,當(dāng)?shù)诙涡枰?jar 包時(shí)則不再?gòu)倪h(yuǎn)程倉(cāng)庫(kù)下載,因?yàn)楸镜貍}(cāng)庫(kù)已經(jīng)有在了步鉴,可以將本地倉(cāng)庫(kù)理解為緩存揪胃,有了本地倉(cāng)庫(kù)就不用每次從遠(yuǎn)程倉(cāng)庫(kù)下載了。
????默認(rèn)本地倉(cāng)庫(kù)位置在{user.din}/.m2/repository氛琢,{user.dir}表示 windows用戶目錄
若需要修改本地倉(cāng)庫(kù)位置喊递,首先打開(kāi) conf 目錄下的 settings.xml 文件,再找到 <u><localRepository></u> 標(biāo)簽(大概在56行)艺沼,然后把自己所配置的本地倉(cāng)庫(kù)目錄填上去册舞,如本人的本地倉(cāng)庫(kù):
<localRepository>D:\apache-maven-3.5.2\maven_repository</localRepository>
????配置完后,終于可以開(kāi)始使用 maven 了U习恪!盛杰!
4挽荡、Maven 工程認(rèn)識(shí)
1)maven 工程的目錄結(jié)構(gòu)
2)maven 工程的運(yùn)行
????進(jìn)入一個(gè) HelloWord 的 maven Web工程目錄(當(dāng)前目錄有 pom. Xm文件),運(yùn)行 <u>mvn tomcat:run</u>命令即供。
然后根據(jù)提示打開(kāi)瀏覽器輸入資源地址(如:localhost:8080/hello_maven/)定拟,即可出現(xiàn)運(yùn)行結(jié)果: Hello World。
3)maven 常用命令
a.compile
mvn compile 是 maven 工程的編譯命令逗嫡,作用是將sr/main/ava下的文件編譯為 class 文件輸出到 target
目錄下青自。
b.test
mvn test 是 maven 工程的測(cè)試命令,會(huì)執(zhí)行 src/test/java下的單元測(cè)試類
c.clean
mvn clean 是 maven 工程的清理命令驱证,執(zhí)行 clean 會(huì)刪除 target目錄及內(nèi)容
d.package
mvn package是 maven 工程的打包命令延窜,對(duì)于 java 工程執(zhí)行 package 打成 jar 包,對(duì)于 web 工程打成 war 包
e.install
mvn install 是 maven 工程的安裝命令抹锄,執(zhí)行 instal 將 maven 打成 jar 包或 war 包發(fā)布到本地倉(cāng)庫(kù)
注:當(dāng)后面的命令執(zhí)行時(shí)逆瑞,前面的操作過(guò)程也都會(huì)自動(dòng)執(zhí)行荠藤,
三、用 IDEA 開(kāi)發(fā) Maven 項(xiàng)目
1获高、maven 在 IDEA 中的配置
a.打開(kāi) → Fie → Settings 配置 maven
b.開(kāi)始創(chuàng)建工程
????-> Create New Project
c.選擇 idea 提供好的 maven 的 web 工程模板
????普通 Java 工程可以選擇骨架: maven-archetype-quickstart
d.填入項(xiàng)目信息
e.點(diǎn)擊 Finish哈肖,等待工程創(chuàng)建
????IDEA 第一次創(chuàng)建 maven 工程會(huì)下載許多依賴包,故時(shí)間會(huì)比較長(zhǎng)
控制臺(tái)出現(xiàn) BUILD SUCCESS 則說(shuō)明成功
f.由于目錄結(jié)構(gòu)不完整念秧,需要自己手動(dòng)補(bǔ)齊
????手動(dòng)添加 src/main/java 目錄淤井,如下圖右鍵 man 文件夾 → New → Directory,2019 版 IDEA 的 新建 Maven 工程摊趾,增加了自動(dòng)隱藏 Make Directory → Sources Root 的步驟庄吼,會(huì)有提示 java 作為自由根目錄
2、創(chuàng)建一個(gè) Servlet
a.創(chuàng)建 Servlet
src/main/java 創(chuàng)建了一個(gè) Servlet严就,但報(bào)錯(cuò)
解決方案总寻,就是要將 servlet-api-xxx.jar 包放進(jìn)來(lái),作為 maven 工程應(yīng)當(dāng)添加 servlet 的坐標(biāo)梢为,從而導(dǎo)入它的 jar
b.在 pom.xml 文件中添加 servlet 的坐標(biāo)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
坐標(biāo)定義如下:
<groupId>com.actadd</groupId>
<artifactId>HelloWorld_Maven</artifactId>
<version>1.0-SNAPSHOT</version>
\
<packaging>war</packaging>
坐標(biāo)來(lái)源:
添加依賴需要指定依賴 jar 包的坐標(biāo)渐行,但是很多情況我們是不知道 jar 包的的坐標(biāo),可以通過(guò)如下兩個(gè)網(wǎng)址查詢:
http://search.mavenorg/
http://mvnrepository.com
c.依賴范圍
A依賴B铸董,需要在A的 pomum文件中添加B的坐標(biāo)祟印,添加坐標(biāo)時(shí)需要指定依賴范圍,依賴范圍包
括:
<u>compile</u></u>:編譯范圍粟害,指 A 在編譯時(shí)依賴 B 蕴忆,此范圍為默認(rèn)依賴范圍。編譯范圍的依賴會(huì)用在編譯悲幅、測(cè)試套鹅、運(yùn)行,由于運(yùn)行時(shí)需要所以編譯范圍的依賴會(huì)被打包汰具。
<u>provided</u>: provided 依賴只有在當(dāng) JDk 或者一個(gè)容器己提供該依賴之后才使用卓鹿, provided 依賴在編譯和測(cè)試時(shí)需要,在運(yùn)行時(shí)不需要留荔,比如: servlet api 被 tomcat 容器提供吟孙。
<u>runtime</u>: runtime依賴在運(yùn)行和測(cè)試系統(tǒng)的時(shí)候需要,但在編譯的時(shí)候不需要聚蝶。比如:jdbc的驅(qū)動(dòng)包杰妓。由于運(yùn)行時(shí)需要所以 runtime 范圍的依賴會(huì)被打包
<u>test</u>:test范圍依賴在編譯和運(yùn)行時(shí)都不需要,它們只有在測(cè)試編譯和測(cè)試運(yùn)行階段可用比如:junt 由于運(yùn)行時(shí)不需要所以 test 范圍依賴不會(huì)被打包碘勉。
<u>system</u>: system 范圍依賴與 provided類似巷挥,但是你必須顯式的提供一個(gè)對(duì)于本地系統(tǒng)中JAR文件的路徑,需要指定 systemPath 磁盤路徑恰聘, system 依賴不推薦使用句各。
<scope> 依賴范圍 </scope>
默認(rèn)引入的 jar 包 -- compile【默認(rèn)范圍可以不寫】(編譯吸占、測(cè)試、運(yùn)行都有效)
servlet-api凿宾、jsp-api -- provided(編譯矾屯、測(cè)試有效,運(yùn)行時(shí)無(wú)效防止和 tomcat 下 jar 沖突)
jdbc 驅(qū)動(dòng) jar 包 -- runtime(測(cè)試初厚、運(yùn)行有效)
junit --- test(測(cè)試有效)
依賴范圍由強(qiáng)到弱的順序是: compile > provided > runtime > test
在項(xiàng)目中添加依賴范圍:
d件蚕、設(shè)置 jdk 編譯的版本為自己安裝的版本
e、繼續(xù)編寫 Servlet
package com.actadd.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @ClassName ServletDemo
* @Description 在 maven 工程中創(chuàng)建一個(gè) ServletDemo
* @Author Actadd
* @Date 21:18 2019/12/15
* @Version 1.0
*/
public class ServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//跳到 hello.jsp 資源
req.getRequestDispatcher("/hello.jsp").forward(req, resp);
}
}
3产禾、編寫 jsp
a.編寫 hello.jsp
b.記得在 web.xml 中配置 servlet 的訪問(wèn)路徑
c.添加 tomcat 插件
pom.xml 中添加 tomcat 插件
接下來(lái)在運(yùn)行按鈕添加 tomcat 運(yùn)行配置:
添加 tomcat
右鍵運(yùn)行