Maven-FAQ

在Windows下安裝、配置Maven

第一步:下載maven

第二步:環境變量中配置MAVEN_HOME:D:\developer\software\maven\apache-maven-3.3.9

第三步:環境變量中配置Path:%MAVEN_HOME%\bin;

第四步:在cmd中檢查Maven環境變量是否配置正確:mvn -v

在Mac下安裝、配置maven

第一步:下載maven

第二步:配置環境變量

#打開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

## 環境變量生效
source ~./bash_profile

## 檢查Maven版本
mvn -v

## 檢查Maven配置路徑
echo $MAVEN_HOME

修改本地倉庫位置

倉庫默認位置是C:\Users\用戶名\.m2\目錄。

修改%MAVEN_HOME%\conf\settinng.xml的文件以更改jar包的下載位置。該文件是Maven的全局配置文件:

<localRepository>D:\workspace\repository</localRepository>

修改遠端倉庫位置

修改`%MAVEN_HOME%\conf\settinng.xml實現從阿里云下載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

創建基于Maven的JaveWeb項目

第一步:創建Maven項目。

File-->Maven-->Maven Project-->maven-archetype-webapp

第二步:設置Group Id、Artifact Id、Package。

  • Group Id:公司名稱,一般分為兩段(等價于包名,比如com.lyn)。比如tomcat的Group Id是org.apache
  • Artifact Id:項目名稱
  • Package:手工設置為與Group Id一樣

第三步:生成用于存放Java源文件的文件夾。

創建Maven項目2

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

創建Maven項目3

Maven有哪些常用命令

mvn clean compile
mvn clean test
mvn clean package
mvn clean install


# 把依賴從classPath中刪除。當你修改pom.xml后建議執行該命令
mvn eclipse:clean

# 轉為eclipse項目,并下載jar包,編譯項目
mvn eclipse:eclipse

# 生成target,并放到repository,這樣的話,其他工程才能依賴該工程
mvn install

# 只生成target,不放到repository
mvn package

聲明編譯等級

聲明main函數路徑

在eclipse中執行復雜的mvn命令

項目右鍵選擇Run as..,Goals填寫clean test實現mvn clean test

dependency標簽詳解

其下有如下子元素:

  • groupId、artifactId、version:必填
  • exclusions:排除傳遞性依賴。選填。
  • scope:依賴作用的范圍。
  • type:依賴的打包方式,jar/war。選填,很少用,因為默認都是用jar格式。
  • optional:標記依賴是否可選。選填,很少用。

依賴的范圍

Java項目有三種classpath環境:編譯、測試、運行。

maven有以下幾種依賴范圍了,分別可以讓依賴作用于特定的環境:

  1. compile:編譯依賴范圍。這也是默認范圍。它對編譯、測試、運行時三種classpath都有效。
  2. test:測試依賴范圍。它只對測試classpath有效。
  3. provided:已提供依賴范圍。它對編譯、測試classpath有效,對運行時無效。
  4. runtime:運行時依賴范圍:它只對運行時classpath有效。
  5. system:系統依賴范圍:它對編譯、測試classpath有效,且專用于引入本地環境變量所能訪問到的jar包,比如<systemPath>${JAVA_HOME}/lib/rt.jar</systemPath>

依賴調解

例如項目A有如下依賴關系:A-->B-->C--X(1.0)、A-->D--X(2.0)。這時會優先選擇X(2.0),因為其依賴路徑更短,這是依賴調解第一原則。

如果依賴路徑長度相同,則在pom.xml中先聲明的依賴優先被使用,這是依賴調解第二原則。

一些最佳實踐

  1. 使用<exclusion>排除依賴,確保同一個項目里只使用一個版本的jar包,避免jar包版本沖突。
  2. 定義全局version信息,統一spring組件的版本
  3. 一些有用的依賴樹查詢命令:
    1. mvn dependency:list獲得當前項目的已解析依賴,即生效的依賴。
    2. mvn dependency:tree獲取依賴樹,用于分析某個依賴是通過哪條傳遞路徑引入的。
    3. mvn dependency:analyze分析依賴樹,用于獲得“已使用但未顯示依賴的組件”,"未使用但已顯示依賴的組件"。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,898評論 6 342
  • 簡介 概述 Maven 是一個項目管理和整合工具 Maven 為開發者提供了一套完整的構建生命周期框架 Maven...
    閩越布衣閱讀 4,321評論 6 39
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,782評論 18 139
  • 春風三里點桃花, 新芽蓓蕾雨里發。 不比紅梅印白雪, 雨打風吹無須夸。
    良柳如煙閱讀 276評論 2 2
  • 兵哥最近手頭上的工作非常多,基本上早上起床以后,要忙到凌晨3點多。 工作越多,我們會越焦慮,會越急躁。 那怎么解決...
    思維導圖閱讀 564評論 0 1