maven的作用:
Maven是一款管理和構建Java項目的工具。
1.依賴管理:
方便快捷的管理項目依賴的資源(jar包)
? ? ? ? 不用手動下載jar包,只需要中maven中引用,maven會查找本地倉庫。若本地倉庫沒有,會直接向遠端倉庫發送下載請求,自動下載jar包。
Maven 倉庫是存放構件的地方,主要分為兩大類:本地倉庫和遠程倉庫。
本地倉庫
本地倉庫是存放在用戶計算機上的一個目錄,Maven 在查找構件時首先會在本地倉庫中查找。如果本地倉庫中存在所需的構件,Maven 會直接使用它們。默認情況下,本地倉庫位于用戶目錄下的?.m2/repository/?目錄中1。
遠程倉庫
如果本地倉庫中沒有找到所需的構件,Maven 會去遠程倉庫查找。遠程倉庫又可以分為三種:
中央倉庫:這是 Maven 自帶的遠程倉庫,包含了絕大部分開源的構件。當本地倉庫沒有所需的構件時,Maven 會嘗試從中央倉庫下載1。
私服:這是一個特殊的遠程倉庫,通常架設在局域網內,用來代理所有的外部遠程倉庫。私服可以節省帶寬,提高下載效率,并且便于部署第三方構件1。
其他公共倉庫:除了中央倉庫和私服外,還有很多其他公開的遠程倉庫,如 java.net Maven 庫和 JBoss Maven 庫1。
????????maven中引用示例
<!--引入依賴--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version></dependency></dependencies>
? ? ? ? 若本地倉庫沒有,則會直接從遠端倉庫下載?org.springframework的jar包。
2.項目構建:
標準的跨平臺的自動化項目構建方式(Linux,Window,MacOS)
? ? ? ? 在IDEA中創建maven文件,會自動化生成固定格式,并且附帶生存期和插件。
3.統一項目結構:
提供標準,統一的項目結構
? ? ? ? Java主流編譯軟件:Eclipse,MyEclipse,IntelliJ IDEA
? ? ? ? 這些軟件生成的Java文件格式不同,無法相互導入。
? ? ? ? 使用maven即可解決,maven提供統一的標準,不同編譯軟件之間可以相互使用。
Maven核心
????????Maven概述:Maven是項目管理和構建工具,它基于項目對象模型(POM)的概念,通過一段描述信息來管理項目的構建。
????????官網:https://mvnrepository.com/
????????Maven結構:pom.xml--->三部分:項目對象模型(POM),依賴管理模型,構建生命周期/階段。
????????項目對象模型(POM)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.cyyWeb</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!--SNAPSHOT是開發中的版本--><!--Release是正式版本--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
</project>
pom由?
? ? <groupId>org.cyyWeb</groupId>
? ? <artifactId>maven-project01</artifactId>
? ? <version>1.0-SNAPSHOT</version>
?? ? <properties>
? ? ? ? <maven.compiler.source>17</maven.compiler.source>
? ? ? ? <maven.compiler.target>17</maven.compiler.target>
? ? ? ? <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
? ? </properties>組成。
????<groupId>org.cyyWeb</groupId>
? ? <artifactId>maven-project01</artifactId>
? ? <version>1.0-SNAPSHOT</version>? ? 是項目的基本信息。其中
groupId是當前Maven項目隸屬的組織名稱,通常為域名反寫。
artifactId是當前Maven項目的名稱。
version用來定義當前的版本號。(SNAPSHOT是開發中的版本,Release是正式版本)
?????<properties>.........</properties>表示JDK的信息,包含JDK的版本。此實驗使用JDK17進行實驗。
????????依賴管理模型
<!--引入依賴--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version></dependency></dependencies>
? ? <dependencies>
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>..........</groupId>
? ? ? ? ? ? <artifactId>.........</artifactId>
? ? ? ? ? ? <version>.......</version>
? ? ? ? </dependency>
? ? </dependencies>用來引入依賴,即導入jar包。本地倉庫沒有時,自動訪問遠端倉庫進行下載。
????????構建生命周期/階段
、
? ? ? ? 生命周期與插件緊密聯系,運行什么生命周期,調用相對應的插件。
Maven的依賴管理
依賴配置
配置
1.編寫<dependencies>? </dependencies>標簽
2.在<dependencies>? </dependencies>中,使用<dependency>? </dependency>引入坐標
3.定義坐標的<groupId>....</groupId>,<artifactId>....</artifactId>,<version>..</version>
???????groupId是引入依賴的組織名稱。
???????artifactId是引入依賴的名稱。
???????version用來定義引入依賴的版本號。
4.點擊刷新,引入最新加入的坐標。
?若不知道依賴的坐標,可以訪問官網查找。
官網:https://mvnrepository.com/
排除依賴
排除依賴:指主動斷開依賴的資源,被排除的資源無需指定版本。
在<dependency>? </dependency>中使用<exclusions>..</exclusions>排除依賴。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.cyyWeb</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!--SNAPSHOT是開發中的版本--><!--Release是正式版本--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--引入依賴--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version><!--排除依賴--><exclusions><exclusion><groupId>io.micrometer</groupId><artifactId>micrometer-observation</artifactId></exclusion></exclusions></dependency></dependencies></project>
注意事項
1.一旦依賴配置變更了,需要重新加載
2.引入的依賴本地倉庫不存在時,需要聯網在遠端倉庫進行下載。
生命周期
Maven的生命周期是為了對所有Maven項目構建過程進行抽象和統一。
Maven有三套相互獨立的生命周期:
clean:清理工作。
default:核心工作,如:編譯,測試,打包,安裝,部署等。
site:生成報告
每套生命周期都包含一些階段,階段是有順序的,后面的階段依賴于前面的階段。
在同一套生命周期中,當后面階段運行時,前面的階段也會運行。
例如:當運行install時,dsfault要從validate運行至install
執行生命周期的兩種方式:
1.在idea中,右側的maven工具欄,選擇對應的生命周期,雙擊運行。
2.在命令行中,通過命令執行。
在項目文件夾中,在上方文件目錄中輸入cmd,回車。
在命令行中輸入mvn clean,執行清理工作。
生命周期與插件:
在執行生命周期時,其本質是調用了對應的插件,完成工作。