Maven筆記之核心概念及常用命令
阿新 • • 發佈:2020-12-16
Maven的核心概念
Maven是一款服務於java平臺的自動化構建工具。 自動化構建工具還有:make->ant->maven->gradle 1.約定的目錄2.POM Project Object Model pom.xml是核心配置檔案,與構建相關的一切都在裡面設定
3.座標 下面三個向量唯一定位一個Maven工程
groupId:公司或組織域名倒序+專案名
artifactId:模組名
version:版本號
Maven工程的座標與倉庫中路勁的關係:groupId + artifactId + version + jar名(groupId和artifictId中的點需要替換為斜槓,類似於java中包的寫法為 java.lang.String,但實際路勁寫法為java/lang/String)
<dependency> <groupId>com.study</groupId> <artifactId>xxx</artifactId> <scope>compile</scope> </dependency>Maven解析依賴時會到本地倉庫去查詢依賴的jar包,對於我們自己開發的Maven工程,使用mvn install後就能進入倉庫。 依賴的範圍(在scope中設定) [1]compiled (預設) 對主程式是否有效:有效 對測試程式是否有效:有效 是否參與打包:參與 [2]test 對主程式是否有效:無效 對測試程式是否有效:有效 是否參與打包:不參與 [3]provided 對主程式是否有效:有效 對測試程式是否有效:有效 是否參與打包:不參與 依賴的特性: ①依賴的傳遞性 [1]好處:可以傳遞的依賴不必在每個模組中重複申明,在“最下面”的工程中依賴一次即可 [2]注意:非compile範圍的依賴不能傳遞。所以在各個模組中,如果有需要就得重複申明依賴。 ②依賴的排除 [1]需要設定依賴排除的場合 [2]依賴排除的設定方式(只對配置的工程及後面依賴該工程的生效) ③依賴的原則 [1]作用:解決模組工程之間jar包的衝突 [2]情景設定1:驗證最短路徑優選原則 [3]情景設定2:驗證最短路徑相同先宣告原則(dependecy標籤申明的順序) ④統一管理依賴的版本 [1]情景舉例 這裡對spring各個jar包的依賴版本都是4.0.0如果想統一升級為4.1.1。 [2]建議配置方式 i:使用properties標籤內使用自定義標籤統一申明版本號
<properties> <myVersion>4.1.1<myVersion> <properties>
ii:在需要統一版本的位置,使用${自定義標籤名}引用申明的版本號
<version>${myVersion}<version>
[3]其實properties標籤配合自定義標籤申明資料的配置並不是只能應用於宣告依賴的版本號,凡是需要統一宣告再引用的場合都可以使用。
5.倉庫 倉庫分類 [1]本地倉庫:為當前電腦上所有的Maven工程服務 [2]遠端倉庫 (1)私服:架設在當前區域網環境下,為當前區域網下所有Maven工程服務 (2)中央倉庫:架設在Internet上,為全世界所有Maven工程服務 (3)中央倉庫映象:架設在各個大洲,為中央倉庫分擔流量。提升使用者訪問速度。 倉庫中儲存的內容:Maven工程 [1]Maven自身所需要的外掛 [2]第三方框架或工具的jar包 [3]我們自己開發的Maven工程 6.生命週期/外掛/目標<!--配置聚合--> <modules> <!--指定各個子工程的相對路徑--> <module></module> <module></module> </modules>[3]使用方式:在聚合工程上執行安裝 8.繼承 [1]問題:模組之前版本不一致(由於test範圍的依賴不能傳遞,所以必然會分散在各個模組工程中,很容易造成版本的不一致) [2]需求:統一管理各個模組工程中對junit依賴的版本 [3]解決思路:將junit依賴統一提取到“父工程”中,在“子工程”中宣告依賴時不指定版本 [4]操作步驟: ①建立一個maven工程作為父工程。注意:打包的方式需為pom
<groupId>org.example</groupId> <artifactId>mavenStudy</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging>
②在子工程中宣告對父工程的引用
<!-- 子工程中宣告父工程--> <parent> <artifactId></artifactId> <groupId></groupId> <version></version> <!--以當前專案為基準的父工程pom.xml檔案的相對路徑--> <relativePath></relativePath> </parent>
③將子工程座標中與父工程座標中重複的內容刪掉
④在父工程中統一junit的依賴
<!--配置依賴的管理--> <dependencyManagement> <dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> <scope></scope> </dependency> </dependencies> </dependencyManagement>
⑤在子工程中刪除junit依賴的版本號
[5]注意:配置繼承後,執行安裝命令需要先安裝父工程。