在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有以下幾種依賴范圍了,分別可以讓依賴作用于特定的環境:
- compile:編譯依賴范圍。這也是默認范圍。它對編譯、測試、運行時三種classpath都有效。
- test:測試依賴范圍。它只對測試classpath有效。
- provided:已提供依賴范圍。它對編譯、測試classpath有效,對運行時無效。
- runtime:運行時依賴范圍:它只對運行時classpath有效。
- 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中先聲明的依賴優先被使用,這是依賴調解第二原則。
一些最佳實踐
- 使用
<exclusion>
排除依賴,確保同一個項目里只使用一個版本的jar包,避免jar包版本沖突。 - 定義全局version信息,統一spring組件的版本
- 一些有用的依賴樹查詢命令:
-
mvn dependency:list
獲得當前項目的已解析依賴,即生效的依賴。 -
mvn dependency:tree
獲取依賴樹,用于分析某個依賴是通過哪條傳遞路徑引入的。 -
mvn dependency:analyze
分析依賴樹,用于獲得“已使用但未顯示依賴的組件”,"未使用但已顯示依賴的組件"。
-