Maven核心功能

一、Maven的常用命令

1、comopile
compile是maven工程的編譯命令,作用是將src/main/java下的文件編譯為class文件輸出到target目錄下。

cmd進(jìn)入命令狀態(tài),執(zhí)行mvn compile,如下圖提示成功:

image.png

查看 target目錄,class文件已生成,編譯完成。

image.png

2、test
test是maven工程的測試命令 mvn test,會執(zhí)行src/test/java下的單元測試類。
cmd執(zhí)行mvn test執(zhí)行src/test/java下單元測試類,下圖為測試結(jié)果,運行1個測試用例,全部成功。

image.png

3、clean
clean是maven工程的清理命令,執(zhí)行 clean會刪除target目錄及內(nèi)容。在你進(jìn)入公司后一般都需要clean一下別人的代碼
4、package
package是maven工程的打包命令,對于java工程執(zhí)行package打成jar包,對于web工程打成war包。
5、install
install是maven工程的安裝命令,執(zhí)行install將maven打成jar包或war包發(fā)布到本地倉庫。
從運行結(jié)果中,可以看出:
當(dāng)后面的命令執(zhí)行時,前面的操作過程也都會自動執(zhí)行,

二、Maven的生命周期

image.png

執(zhí)行后面的命令的時候前面的命令會自動執(zhí)行,
maven對項目構(gòu)建過程分為三套相互獨立的生命周期,請注意這里說的是“三套”,而且“相互獨立”,這三套生命周期分別是:

Clean Lifecycle 在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作。
Default Lifecycle 構(gòu)建的核心部分,編譯,測試,打包,部署等等。
Site Lifecycle 生成項目報告,站點,發(fā)布站點。

三、Maven概念模型圖

image.png

項目對象模型 (Project Object Model)
一個maven工程都有一個pom.xml文件,通過pom.xml文件定義項目的坐標(biāo)、項目依賴、項目信息、插件目標(biāo)等。

依賴管理系統(tǒng)(Dependency Management System)
通過maven的依賴管理對項目所依賴的jar 包進(jìn)行統(tǒng)一管理。
比如:項目依賴junit4.9,通過在pom.xml中定義junit4.9的依賴即使用junit4.9,如下所示是junit4.9的依賴定義:

<!-- 依賴關(guān)系 -->
    <dependencies>
        <!-- 此項目運行使用junit,所以此項目依賴junit -->
        <dependency>
            <!-- junit的項目名稱 -->
            <groupId>junit</groupId>
            <!-- junit的模塊名稱 -->
            <artifactId>junit</artifactId>
            <!-- junit版本 -->
            <version>4.9</version>
            <!-- 依賴范圍:單元測試時使用junit -->
            <scope>test</scope>
        </dependency>

一個項目生命周期(Project Lifecycle)
使用maven完成項目的構(gòu)建,項目構(gòu)建包括:清理、編譯、測試、部署等過程,maven將這些過程規(guī)范為一個生命周期,如下所示是生命周期的各各階段:

image.png

maven通過執(zhí)行一些簡單命令即可實現(xiàn)上邊生命周期的各各過程,比如執(zhí)行mvn compile執(zhí)行編譯、執(zhí)行mvn clean執(zhí)行清理。

一組標(biāo)準(zhǔn)集合
maven將整個項目管理過程定義一組標(biāo)準(zhǔn),比如:通過maven構(gòu)建工程有標(biāo)準(zhǔn)的目錄結(jié)構(gòu),有標(biāo)準(zhǔn)的生命周期階段、依賴管理有標(biāo)準(zhǔn)的坐標(biāo)定義等。

插件(plugin)目標(biāo)(goal)
maven 管理項目生命周期過程都是基于插件完成的。

四、依賴范圍

A依賴B,需要在A的pom.xml文件中添加B的坐標(biāo),添加坐標(biāo)時需要指定依賴范圍,依賴范圍包括:

compile:編譯范圍,指A在編譯時依賴B,此范圍為默認(rèn)依賴范圍。編譯范圍的依賴會用在編譯、測試、運行,由于運行時需要所以編譯范圍的依賴會被打包。

provided:provided依賴只有在當(dāng)JDK或者一個容器已提供該依賴之后才使用, provided依賴在編譯和測試時需要,在運行時不需要,比如:servlet api被tomcat容器提供。

runtime:runtime依賴在運行和測試系統(tǒng)的時候需要,但在編譯的時候不需要。比如:jdbc的驅(qū)動包。由于運行時需要所以runtime范圍的依賴會被打包。

test:test范圍依賴 在編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用,比如:junit。由于運行時不需要所以test范圍依賴不會被打包。

system:system范圍依賴與provided類似,但是你必須顯式的提供一個對于本地系統(tǒng)中JAR文件的路徑,需要指定systemPath磁盤路徑,system依賴不推薦使用。

image.png

在maven-web工程中測試各各scop。

測試總結(jié):

默認(rèn)引入 的jar包 ------- compile 【默認(rèn)范圍 可以不寫】(編譯、測試、運行 都有效 )
servlet-api 、jsp-api ------- provided (編譯、測試 有效, 運行時無效 防止和tomcat下jar沖突)
jdbc驅(qū)動jar包 ---- runtime (測試、運行 有效 )
junit ----- test (測試有效)

依賴范圍由強(qiáng)到弱的順序是:compile>provided>runtime>test

五、工程拆封與聚合

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 人生真是很奇妙,每個人從生到死都是在爬一座山峰,中途你會停下小憩,思考,抑或積蓄能量。準(zhǔn)備下一次攀登。有些人只是陪...
    印子尋閱讀 199評論 0 0

友情鏈接更多精彩內(nèi)容