該心得全部來源于菜鳥教程-maven以及尚硅谷Java視頻教程_Maven的學(xué)習(xí)過程筆記惭聂。
Maven:一個(gè)純Java開發(fā)的開源項(xiàng)目伐厌,總的來說就是一個(gè)項(xiàng)目管理工具只祠,可以對(duì)Java項(xiàng)目進(jìn)行構(gòu)建侍瑟、依賴管理。利用一個(gè)中央信息片段能管理一個(gè)項(xiàng)目的構(gòu)建莱预、報(bào)告和文檔等步驟柠掂。
Maven的功能:可以幫助開發(fā)者完成構(gòu)建、文檔生成依沮、報(bào)告涯贞、依賴、SCMS悉抵、發(fā)布肩狂、分發(fā)、郵件列表等工作姥饰。
Maven的特點(diǎn):
Maven的使用配置:java環(huán)境配置傻谁、maven的環(huán)境配置,網(wǎng)上搜索一下就知道如何配置maven的環(huán)境變量了列粪。配置完成之后在doc命令(windows下)下輸入:mvn -v审磁,如果成功則會(huì)顯示maven版號(hào)信息谈飒。
POM(Project Object Model,項(xiàng)目構(gòu)建模型)
Maven POM:是maven工程的基本工作單元,是一個(gè)xml文件态蒂,包含了項(xiàng)目的基本信息杭措,用于描述如何創(chuàng)建構(gòu)建,聲明項(xiàng)目依賴钾恢,等等手素。
????執(zhí)行任務(wù)或目標(biāo)時(shí),Maven 會(huì)在當(dāng)前目錄中查找 POM瘩蚪。它讀取 POM泉懦,獲取所需的配置信息,然后執(zhí)行目標(biāo)疹瘦。
POM中可以指定以下配置:項(xiàng)目依賴崩哩、插件、執(zhí)行目標(biāo)言沐、項(xiàng)目構(gòu)建profile邓嘹、項(xiàng)目版本、項(xiàng)目開發(fā)者列表险胰、相關(guān)郵件列表信息汹押。
筆記
1、查看Maven環(huán)境是否配置完成:mvn -v 鸯乃;
2鲸阻、更新Maven的本地庫
修改{Home}\conf\setting.xml,更新localRepository到自己本地的目錄
創(chuàng)建完新的項(xiàng)目之后,所有相關(guān)文件將被存儲(chǔ)在你的Maven本地倉(cāng)庫
3缨睡、從Maven模版創(chuàng)建一個(gè)項(xiàng)目
mvn archetype:generate -DgroupId=com.huangyueze -DartifactId=MavenTest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
4、讓一個(gè)普通的Maven成為一個(gè)eclipse項(xiàng)目陈辱,使用終端進(jìn)入到項(xiàng)目中
mvn eclipse:eclipse
常用Maven的命令
[1] mvn clean:清理
[2] mvn complie :編譯主程序
[3] mvn test -complie:編譯測(cè)試程序
[4] mvn test:執(zhí)行測(cè)試
[5] mvn package:打包
關(guān)于聯(lián)網(wǎng)問題
1.Maven的核心程序僅僅定義了抽象的生命周期奖年,但是具體的工作必須由特定的插件來完成。而插件本身并不包含在Maven的核心程序中沛贪。
2.當(dāng)我們執(zhí)行的Maven命令需要用到某些插件的時(shí)陋守,Maven核心程序會(huì)首先到本地倉(cāng)庫中查找。
3.本地倉(cāng)庫的默認(rèn)位置:[系統(tǒng)中當(dāng)前用戶的家目錄]\.m2\repository
C:\Users\Administrator\.m2\repository
4. Maven核心程序如果在本地倉(cāng)庫中找不到需要的插件利赋,那么他會(huì)自動(dòng)連接外網(wǎng)水评,到中央倉(cāng)庫下載。
5.如果此時(shí)無法連接外網(wǎng)媚送,則構(gòu)建失敗
6.修改默認(rèn)本地倉(cāng)庫的為止可以讓Maven核心程序到我們實(shí)現(xiàn)準(zhǔn)備好的目錄下查找插件
【1】中燥、找到Maven解壓目錄\conf\setting.xml
【2】、在setting.xml文件中倒找localRepository標(biāo)簽
【3】塘偎、將<localRepository>/path/to/local/repo</localRepository>從注視中取出疗涉,設(shè)置為制定好的Maven倉(cāng)庫目錄拿霉。比如我這里設(shè)置為了:E:\Maven\apache-maven-3.6.1\repository
依賴
【1】Maven解析依賴信息回到本地倉(cāng)庫中查找被依賴的jar包。
? ? ? ? ? ? 對(duì)于我們自己開發(fā)的Maven工程咱扣,使用install命令安裝后就可以進(jìn)入倉(cāng)庫绽淘。
【2】依賴的范圍
? ? ? ? 【1】compile范圍依賴
? ? ? ? ? ? ? ? ? ? >對(duì)主程序是否有效:有效
? ? ? ? ? ? ? ? ? ? >對(duì)測(cè)試程序是否有效:有效
? ? ? ? ? ? ? ? ? ? >是否參與打包:參與
? ? ? ? 【2】test范圍依賴
? ? ? ? ? ? ? ? ? ? >對(duì)主程序是否有效:無效
? ? ? ? ? ? ? ? ? ? >對(duì)測(cè)試程序是否有效:有效,就是為測(cè)試程序設(shè)計(jì)的
? ? ? ? ? ? ? ? ? ? >是否參與打包:不參與
? ? ? ? ? ? ? ? ? ? >典型例子:junit-3.8.8.jar的依賴范圍就是test
? ? ? ? 【3】provided范圍依賴
? ? ? ? ? ? ? ? ? ?>對(duì)主程序是否有效:有效
? ? ? ? ? ? ? ? ? ?> 對(duì)測(cè)試程序是否有效:有效
? ? ? ? ? ? ? ? ? ?>是否參與打包:不參與
? ? ? ? ? ? ? ? ? ?>是否參與部署:不參與部署
? ? ? ? ? ? ? ? ? ?>典型例子:servlet-api.jar
【3】依賴高級(jí)
? ? ? ? 依賴的傳遞性:?
? ? ? ? ? ? 1、好處:可以傳遞的依賴不必再每個(gè)模塊工程中都重復(fù)聲明,在“最下面”的工程中依賴一次即可 擎颖。
? ? ? ? ? ? 2潘懊、注意:非compile范圍的依賴不能傳遞。所以在各個(gè)工程模塊中厨诸,如果有需要就得重復(fù)生命依賴。
? ? ? ? 依賴的排除(需要注意排除的場(chǎng)合,需要排除的情景也比較少):
? ? ? ? ? ? 1驮肉、依賴排除的設(shè)置方式,在依賴中添加<exclusion></exclusion>節(jié)點(diǎn)已骇;
? ? ? ? 依賴的原則:
? ? ? ? ? ? 1离钝、作用:解決模塊工程之間的jar包沖突問題;
? ? ? ? ? ? 2褪储、情景設(shè)定1:驗(yàn)證路徑最短者優(yōu)先原則卵渴;
? ? ? ? ? ? 3、情景設(shè)定2:驗(yàn)證路徑相同時(shí)先聲明者優(yōu)先鲤竹;
Properties標(biāo)簽
properties標(biāo)簽配合自定義標(biāo)簽生命數(shù)據(jù)的配置并不只是只能用于聲明依賴的版本號(hào)浪读。凡事需要統(tǒng)一聲明后再引用的場(chǎng)合都可以使用。
<properties>
????????????<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> ????????????<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
? ? ? ? ? ? <com.hyz.test>4.1.1.RELEASE</com.hyz.test> 我自定義的
?</properties>
繼承
在eclipse中使用maven
1辛藻、Maven插件:Eclipse內(nèi)置了一個(gè)maven插件
2碘橘、Maven插件的設(shè)置
? ? ? ? 【1】installations:指定Maven核心程序的位置。不建議使用插件自帶的maven程序吱肌,而應(yīng)該使用我們自己的maven痘拆。
? ? ? ? 【2】user settings:指定conf/settings.xml的位置,從而找到本地倉(cāng)庫的位置氮墨。
聚合(一鍵安裝各個(gè)模塊的工程)
步驟:在一個(gè)“總的聚合工程中”中配置各個(gè)參與聚合的模塊
<modules>
?????????<module>../MavenTest</module>
? ? ? ? ......
?</modules>