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

修改本地倉庫位置

倉庫默認(rèn)位置是C:\Users\用戶名\.m2\目錄。

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

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

修改遠(yuǎn)端倉庫位置

修改`%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:公司名稱,一般分為兩段(等價于包名,比如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

聲明編譯等級

聲明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)境:編譯、測試、運(yùn)行

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

  1. compile:編譯依賴范圍。這也是默認(rèn)范圍。它對編譯、測試、運(yùn)行時三種classpath都有效。
  2. test:測試依賴范圍。它只對測試classpath有效。
  3. provided:已提供依賴范圍。它對編譯、測試classpath有效,對運(yùn)行時無效。
  4. runtime:運(yùn)行時依賴范圍:它只對運(yùn)行時classpath有效。
  5. system:系統(tǒng)依賴范圍:它對編譯、測試classpath有效,且專用于引入本地環(huá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)。這時會優(yōu)先選擇X(2.0),因?yàn)槠湟蕾嚶窂礁蹋@是依賴調(diào)解第一原則。

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

一些最佳實(shí)踐

  1. 使用<exclusion>排除依賴,確保同一個項(xiàng)目里只使用一個版本的jar包,避免jar包版本沖突。
  2. 定義全局version信息,統(tǒng)一spring組件的版本
  3. 一些有用的依賴樹查詢命令:
    1. mvn dependency:list獲得當(dāng)前項(xiàng)目的已解析依賴,即生效的依賴。
    2. mvn dependency:tree獲取依賴樹,用于分析某個依賴是通過哪條傳遞路徑引入的。
    3. mvn dependency:analyze分析依賴樹,用于獲得“已使用但未顯示依賴的組件”,"未使用但已顯示依賴的組件"。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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

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