Maven 快速入門

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)建流程:


Alt

2吼肥、maven 能做啥?

????用 maven 對(duì)項(xiàng)目進(jìn)行管理随常,可以幫我們<u>構(gòu)建工程潜沦,管理jar包</u>,編譯代碼绪氛,減小工程占用的空間唆鸡,還能幫我們自動(dòng)運(yùn)行單元測(cè)試,打包枣察,生成報(bào)表争占,甚至部署項(xiàng)目等等

Maven依賴管理:


Alt

二燃逻、Maven 的使用

1、maven 的下載安裝與目錄結(jié)構(gòu)

a.下載:

????Maven官網(wǎng)下載

Alt

b.安裝:

????與普通軟件一樣臂痕,不要有特殊符號(hào)與空格

c.目錄結(jié)構(gòu):

Alt

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í)目錄)

Alt

添加到Path路徑

Alt

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)

Alt
Alt

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

Alt

b.開(kāi)始創(chuàng)建工程

????-> Create New Project

c.選擇 idea 提供好的 maven 的 web 工程模板

????普通 Java 工程可以選擇骨架: maven-archetype-quickstart

Alt

d.填入項(xiàng)目信息

Alt
Alt
Alt

e.點(diǎn)擊 Finish哈肖,等待工程創(chuàng)建

????IDEA 第一次創(chuàng)建 maven 工程會(huì)下載許多依賴包,故時(shí)間會(huì)比較長(zhǎng)

Alt
Alt

控制臺(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 作為自由根目錄

Alt
Alt

2、創(chuàng)建一個(gè) Servlet

a.創(chuàng)建 Servlet

src/main/java 創(chuàng)建了一個(gè) Servlet严就,但報(bào)錯(cuò)

Alt

解決方案总寻,就是要將 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)

Alt
<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)目中添加依賴范圍:

Alt

d件蚕、設(shè)置 jdk 編譯的版本為自己安裝的版本

Alt

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

Alt

b.記得在 web.xml 中配置 servlet 的訪問(wèn)路徑

Alt

c.添加 tomcat 插件

pom.xml 中添加 tomcat 插件

Alt

接下來(lái)在運(yùn)行按鈕添加 tomcat 運(yùn)行配置:

Alt
Alt

添加 tomcat

Alt

右鍵運(yùn)行

Alt

4排作、運(yùn)行結(jié)果

Alt
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市亚情,隨后出現(xiàn)的幾起案子妄痪,更是在濱河造成了極大的恐慌,老刑警劉巖楞件,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衫生,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡土浸,警方通過(guò)查閱死者的電腦和手機(jī)罪针,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)黄伊,“玉大人泪酱,你說(shuō)我怎么就攤上這事』棺睿” “怎么了墓阀?”我有些...
    開(kāi)封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)憋活。 經(jīng)常有香客問(wèn)我岂津,道長(zhǎng),這世上最難降的妖魔是什么悦即? 我笑而不...
    開(kāi)封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮橱乱,結(jié)果婚禮上辜梳,老公的妹妹穿的比我還像新娘。我一直安慰自己泳叠,他們只是感情好作瞄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著危纫,像睡著了一般宗挥。 火紅的嫁衣襯著肌膚如雪乌庶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天契耿,我揣著相機(jī)與錄音瞒大,去河邊找鬼。 笑死搪桂,一個(gè)胖子當(dāng)著我的面吹牛透敌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播踢械,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼酗电,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了内列?” 一聲冷哼從身側(cè)響起撵术,我...
    開(kāi)封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎话瞧,沒(méi)想到半個(gè)月后嫩与,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡移稳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蕴纳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片个粱。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡古毛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出都许,到底是詐尸還是另有隱情稻薇,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布胶征,位于F島的核電站塞椎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏睛低。R本人自食惡果不足惜案狠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钱雷。 院中可真熱鬧骂铁,春花似錦、人聲如沸罩抗。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)套蒂。三九已至钞支,卻和暖如春茫蛹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背烁挟。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工婴洼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人信夫。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓窃蹋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親静稻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子警没,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • maven快速入門 一、Maven 介紹 1振湾、啥是 maven 杀迹? Maven是一個(gè)項(xiàng)目管理工具,它包含了這些邏輯...
    Actadd閱讀 308評(píng)論 0 0
  • 1.什么是Maven押搪? Json Van Zyl是Maven的創(chuàng)始人树酪。 他給我們帶來(lái)了全新的項(xiàng)目構(gòu)建方式。 Jas...
    OzanShareing閱讀 1,568評(píng)論 0 1
  • 第1章 Maven 介紹 什么是 Maven 什么是 Maven Maven 的正確發(fā)音是[?mev?n]大州,而不是...
    強(qiáng)某某閱讀 2,382評(píng)論 0 25
  • Maven在Java生態(tài)體系中可謂是大名鼎鼎续语。對(duì)于初次接觸到Maven的同學(xué)來(lái)說(shuō),可能會(huì)被它紛繁復(fù)雜的配置搞得焦頭...
    一米的光年閱讀 369評(píng)論 0 0
  • 一厦画、概述 Apache Maven is a software project management and co...
    凜_冬_將_至閱讀 445評(píng)論 0 2