在Windows下安裝绽族、配置Maven
第一步:下載maven
第二步:環(huán)境變量中配置MAVEN_HOME:D:\developer\software\maven\apache-maven-3.3.9
第三步:環(huán)境變量中配置Path:%MAVEN_HOME%\bin;
第四步:在cmd中檢查Maven環(huán)境變量是否配置正確:mvn -v
在Mac下安裝率翅、配置maven
第一步:下載maven
第二步:配置環(huán)境變量
#打開iTerm輸入
touch ~/.bash_profile
vi ~/.bash_profile
## 輸入
export MAVEN_HOME=/Users/lynmonade/Documents/Software/maven/apache-maven-3.5.4
export PATH=$PATH:$MAVEN_HOME/bin
## 環(huán)境變量生效
source ~./bash_profile
## 檢查Maven版本
mvn -v
## 檢查Maven配置路徑
echo $MAVEN_HOME
修改本地倉(cāng)庫(kù)位置
倉(cāng)庫(kù)默認(rèn)位置是C:\Users\用戶名\.m2\
目錄。
修改%MAVEN_HOME%\conf\settinng.xml
的文件以更改jar包的下載位置凛膏。該文件是Maven的全局配置文件:
<localRepository>D:\workspace\repository</localRepository>
修改遠(yuǎn)端倉(cāng)庫(kù)位置
修改`%MAVEN_HOME%\conf\settinng.xml實(shí)現(xiàn)從阿里云下載jar文件:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
讓eclipse使用你的Maven
eclipse自帶了maven插件,只需要配置一下maven插件讓其指向你本地的maven即可蓉冈。Window--Preferences-Maven--Installations-->Add:選擇你安裝的maven
明未。
創(chuàng)建基于Maven的JaveWeb項(xiàng)目
第一步:創(chuàng)建Maven項(xiàng)目瞳别。
File-->Maven-->Maven Project-->maven-archetype-webapp
第二步:設(shè)置Group Id征候、Artifact Id杭攻、Package。
- Group Id:公司名稱疤坝,一般分為兩段(等價(jià)于包名兆解,比如com.lyn)。比如tomcat的Group Id是org.apache
- Artifact Id:項(xiàng)目名稱
- Package:手工設(shè)置為與Group Id一樣
第三步:生成用于存放Java源文件的文件夾跑揉。
第四步:生成與Group Id一致的包名锅睛。
Maven有哪些常用命令
mvn clean compile
mvn clean test
mvn clean package
mvn clean install
# 把依賴從classPath中刪除。當(dāng)你修改pom.xml后建議執(zhí)行該命令
mvn eclipse:clean
# 轉(zhuǎn)為eclipse項(xiàng)目历谍,并下載jar包衣撬,編譯項(xiàng)目
mvn eclipse:eclipse
# 生成target,并放到repository扮饶,這樣的話,其他工程才能依賴該工程
mvn install
# 只生成target乍构,不放到repository
mvn package
聲明編譯等級(jí)
聲明main函數(shù)路徑
在eclipse中執(zhí)行復(fù)雜的mvn命令
項(xiàng)目右鍵選擇Run as..甜无,Goals填寫clean test
實(shí)現(xiàn)mvn clean test
。
dependency標(biāo)簽詳解
其下有如下子元素:
- groupId哥遮、artifactId岂丘、version:必填
- exclusions:排除傳遞性依賴。選填眠饮。
- scope:依賴作用的范圍奥帘。
- type:依賴的打包方式,jar/war仪召。選填寨蹋,很少用,因?yàn)槟J(rèn)都是用jar格式扔茅。
- optional:標(biāo)記依賴是否可選已旧。選填,很少用召娜。
依賴的范圍
Java項(xiàng)目有三種classpath環(huán)境:編譯运褪、測(cè)試、運(yùn)行玖瘸。
maven有以下幾種依賴范圍了秸讹,分別可以讓依賴作用于特定的環(huán)境:
- compile:編譯依賴范圍。這也是默認(rèn)范圍雅倒。它對(duì)編譯璃诀、測(cè)試、運(yùn)行時(shí)三種classpath都有效屯断。
- test:測(cè)試依賴范圍文虏。它只對(duì)測(cè)試classpath有效侣诺。
- provided:已提供依賴范圍。它對(duì)編譯氧秘、測(cè)試classpath有效年鸳,對(duì)運(yùn)行時(shí)無(wú)效。
- runtime:運(yùn)行時(shí)依賴范圍:它只對(duì)運(yùn)行時(shí)classpath有效丸相。
- system:系統(tǒng)依賴范圍:它對(duì)編譯搔确、測(cè)試classpath有效,且專用于引入本地環(huán)境變量所能訪問(wèn)到的jar包灭忠,比如
<systemPath>${JAVA_HOME}/lib/rt.jar</systemPath>
依賴調(diào)解
例如項(xiàng)目A有如下依賴關(guān)系:A-->B-->C--X(1.0)膳算、A-->D--X(2.0)。這時(shí)會(huì)優(yōu)先選擇X(2.0)弛作,因?yàn)槠湟蕾嚶窂礁烫榉洌@是依賴調(diào)解第一原則。
如果依賴路徑長(zhǎng)度相同映琳,則在pom.xml中先聲明的依賴優(yōu)先被使用机隙,這是依賴調(diào)解第二原則。
一些最佳實(shí)踐
- 使用
<exclusion>
排除依賴萨西,確保同一個(gè)項(xiàng)目里只使用一個(gè)版本的jar包有鹿,避免jar包版本沖突。 - 定義全局version信息谎脯,統(tǒng)一spring組件的版本
- 一些有用的依賴樹查詢命令:
-
mvn dependency:list
獲得當(dāng)前項(xiàng)目的已解析依賴葱跋,即生效的依賴。 -
mvn dependency:tree
獲取依賴樹源梭,用于分析某個(gè)依賴是通過(guò)哪條傳遞路徑引入的娱俺。 -
mvn dependency:analyze
分析依賴樹,用于獲得“已使用但未顯示依賴的組件”咸产,"未使用但已顯示依賴的組件"矢否。
-