Maven-FAQ

在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源文件的文件夾跑揉。

創(chuàng)建Maven項(xiàng)目2

第四步:生成與Group Id一致的包名锅睛。

創(chuàng)建Maven項(xiàng)目3

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)境:

  1. compile:編譯依賴范圍。這也是默認(rèn)范圍雅倒。它對(duì)編譯璃诀、測(cè)試、運(yùn)行時(shí)三種classpath都有效屯断。
  2. test:測(cè)試依賴范圍文虏。它只對(duì)測(cè)試classpath有效侣诺。
  3. provided:已提供依賴范圍。它對(duì)編譯氧秘、測(cè)試classpath有效年鸳,對(duì)運(yùn)行時(shí)無(wú)效。
  4. runtime:運(yùn)行時(shí)依賴范圍:它只對(duì)運(yùn)行時(shí)classpath有效丸相。
  5. 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í)踐

  1. 使用<exclusion>排除依賴萨西,確保同一個(gè)項(xiàng)目里只使用一個(gè)版本的jar包有鹿,避免jar包版本沖突。
  2. 定義全局version信息谎脯,統(tǒng)一spring組件的版本
  3. 一些有用的依賴樹查詢命令:
    1. mvn dependency:list獲得當(dāng)前項(xiàng)目的已解析依賴葱跋,即生效的依賴。
    2. mvn dependency:tree獲取依賴樹源梭,用于分析某個(gè)依賴是通過(guò)哪條傳遞路徑引入的娱俺。
    3. mvn dependency:analyze分析依賴樹,用于獲得“已使用但未顯示依賴的組件”咸产,"未使用但已顯示依賴的組件"矢否。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市脑溢,隨后出現(xiàn)的幾起案子僵朗,更是在濱河造成了極大的恐慌,老刑警劉巖屑彻,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件验庙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡社牲,警方通過(guò)查閱死者的電腦和手機(jī)粪薛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)搏恤,“玉大人违寿,你說(shuō)我怎么就攤上這事湃交。” “怎么了藤巢?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵搞莺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我掂咒,道長(zhǎng)才沧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任绍刮,我火速辦了婚禮温圆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孩革。我一直安慰自己岁歉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布膝蜈。 她就那樣靜靜地躺著刨裆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彬檀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天瞬女,我揣著相機(jī)與錄音窍帝,去河邊找鬼。 笑死诽偷,一個(gè)胖子當(dāng)著我的面吹牛坤学,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播报慕,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼深浮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了眠冈?” 一聲冷哼從身側(cè)響起飞苇,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜗顽,沒想到半個(gè)月后布卡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雇盖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年忿等,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崔挖。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贸街,死狀恐怖庵寞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情薛匪,我是刑警寧澤捐川,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站蛋辈,受9級(jí)特大地震影響属拾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冷溶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一渐白、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逞频,春花似錦纯衍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至基协,卻和暖如春歌亲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背澜驮。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工陷揪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杂穷。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓悍缠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親耐量。 傳聞我的和親對(duì)象是個(gè)殘疾皇子飞蚓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,859評(píng)論 6 342
  • 簡(jiǎn)介 概述 Maven 是一個(gè)項(xiàng)目管理和整合工具 Maven 為開發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,307評(píng)論 6 39
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)廊蜒,斷路器趴拧,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139
  • 春風(fēng)三里點(diǎn)桃花, 新芽蓓蕾雨里發(fā)山叮。 不比紅梅印白雪八堡, 雨打風(fēng)吹無(wú)須夸。
    良柳如煙閱讀 269評(píng)論 2 2
  • 兵哥最近手頭上的工作非常多挂谍,基本上早上起床以后叔壤,要忙到凌晨3點(diǎn)多。 工作越多口叙,我們會(huì)越焦慮炼绘,會(huì)越急躁。 那怎么解決...
    思維導(dǎo)圖閱讀 555評(píng)論 0 1