Maven

一.需求
1.maven將jar包保存到本地,不同項目都指向了rp目錄下所需要的的jar包
2.減少了尋找jar包的時間,通過gav,從遠程倉庫下載
3.maven可以自動導入依賴的jar包
4.maven可以拆分項目,原來都是通過package進行劃分。有了maven就可以將項目劃分成多個模組,模組間通過在pom文件中引入需要的模組的jar,來互相調用
 
二.maven是一個自動化的構建工具
構建過程包含:
1.清理
2.編譯
3.測試
4.報告
5.打包
6.安裝
7部署
 
 
maven的自動化構建就是自動的從構建過程的起點執行到結束。
 
三.maven項目的目錄結構
1.根目錄
2.src
3.pom文件
4.main
5.test
6.java
7.resource
maven項目需要遵守一定的目錄結構規範,因為項目使用maven構建,maven需要知道項目的結構。
 
四.常用maven命令
1.mvn clean
2.mvn test-compile
3.mvn compile
4.mvn install
5.mvn package
6.mvn deploy
 
maven核心程式中只定義了抽象的生命周期,但是具體的工作需要由特定的插件來完成。
 
五.pom文件
pom文件定義maven相關的一切設置
gav
groupid:公司域名跟項目名
artifactid:模組名
version:版本
 
倉庫搜索過程:本地倉庫,中央倉庫,遠程倉庫
私服,遠程倉庫鏡像(中央倉庫的複製版)
倉庫中的內容:1.maven自身的插件 2.第三方jar包(第一方是jdk,第二方是自己) 3.自身項目的jar包
 
六.jar包依賴的範圍
1.compile
對主程式有效
對測試程式有效
參與打包
 
2.test
對主程式無效
對測試程式有效
不參與打包
 
3.provided
對主程式有效
對測試程式有效
不參與打包
不參與部署
example:servlet-api.jar
 
七.Maven的生命周期
不論要執行生命周期中的哪個階段,都要從頭開始
 
八.jar包衝突
由於maven的依賴傳遞,當我們需要A的依賴的時候,就會在pom.xml中引入A的jar包;而引入的A的jar包中可能又依賴B的jar包,這樣Maven在解析pom.xml的時候,會依次將A、B 的jar包全部都引入進來。
 
maven默認的策略
1.路徑最短
2.新聲明
 
九.依賴傳遞
非compile範圍的依賴不能傳遞
exclusion排除不需要的依賴
 
10.統一版本號
在properties中定義統一版本號
 
11.Maven的繼承
創建一個maven工程為父工程,<dependencyManagement>配置依賴的統一管理,打包方式為pom
在子工程中加上對父工程的引用
子工程中不需要添加父工程中已有依賴的版本號
 

<parent>
<artifactId>geek</artifactId>
<groupId>org.wzp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
12.Maven的聚合
在父工程中指明參與的模組
<modules>
<module>LearnDubbo</module>
<module>LearnJdk</module>
<module>LearnSpring</module>
<module>LearnGson</module>
</modules>

Tags: