什麼是Maven?
maven是一個專案構建,依賴管理工具,使用maven工具可以實現自動化構建,測試,打包和釋出專案,提高了開發效率
專案構建
指將原始碼、配置檔案、資原始檔等轉化為能夠執行或部署的應用程式或庫的過程
專案構建的過程:清理、編譯、測試、報告、打包、部署
打包方式:
- Java工程打jar包
- Web工程打war包
點選檢視程式碼
war包打包外掛和jdk版本不匹配:需要在pom.xml中新增程式碼
<build>
<!-- jdk17 和 war包版本外掛不匹配 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
</plugins>
</build>
- Pom不參與打包,當建立一個父工程的時候,會自動生成pom打包
基於IDEA對mavne進行管理
maven工程的核心資訊配置和解讀
<!-- 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者組織的唯一標誌,並且配置時生成的路徑也是由此生成, 如com.companyname.project-group,maven會將該專案打成的jar包放本地路徑:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 專案的唯一ID,一個groupId下面可能多個專案,就是靠artifactId來區分的 -->
<artifactId>project</artifactId>
<!-- 版本號 -->
<version>1.0.0</version>
<!--打包方式
預設:jar
jar指的是普通的java專案打包方式! 專案打成jar包!
war指的是web專案打包方式!專案打成war包!
pom不會講專案打包!這個專案作為父工程,被其他工程聚合或者繼承!後面會講解兩個概念
-->
<packaging>jar/pom/war</packaging>
maven工程依賴管理配置
maven倉庫地址
可以透過編寫依賴jar包的gav必要屬性,引入第三方jar依賴
scope屬性是可選的,表示的是指定依賴的範圍
依賴範圍 | 描述 | 編譯時 | 測試時 | 執行時 | 示例依賴 |
---|---|---|---|---|---|
compile | 預設依賴範圍,用於編譯、測試和執行 | ✓ | ✓ | ✓ | spring-core |
test | 僅用於測試階段的依賴 | ✗ | ✓ | ✗ | JUnit |
provided | 編譯和測試時需要,但執行時由環境提供的依賴 | ✓ | ✓ | ✗ | servlet-api |
runtime | 編譯時不需要,但測試和執行時需要的依賴 | ✗ | ✓ | ✓ | JDBC驅動實現 |
system | 與provided 類似,但需要顯式指定依賴檔案路徑 |
✓ | ✓ | ✗ | 本地系統庫(不常見) |
import | 僅在<dependencyManagement> 中有效,用於匯入其他POM的依賴管理 |
- | - | - | 其他POM檔案(不直接對應依賴) |
依賴版本的統一提取和維護
我們可以將依賴的版本全部放到
依賴放在
<!--宣告版本-->
<properties>
<!--命名隨便,內部制定版本號即可!-->
<junit.version>4.11</junit.version>
<!-- 也可以透過 maven規定的固定的key,配置maven的引數!如下配置編碼格式!-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!--引用properties宣告版本 -->
<version>${junit.version}</version>
</dependency>
</dependencies>
依賴下載失敗錯誤解決方法
- 下載依賴時出現網路故障或倉庫伺服器當機等原因,導致無法連線至 Maven 倉庫,從而無法下載依賴。
- 依賴項的版本號或配置檔案中的版本號錯誤,或者依賴項沒有正確定義,導致 Maven 下載的依賴項與實際需要的不一致,從而引發錯誤。
- 本地 Maven 倉庫或快取被汙染或損壞,導致 Maven 無法正確地使用現有的依賴項。
解決方案: - 檢查網路連線和 Maven 倉庫伺服器狀態。
- 確保依賴項的版本號與專案對應的版本號匹配,並檢查 POM 檔案中的依賴項是否正確。
- 清除本地 Maven 倉庫快取(lastUpdated 檔案),因為只要存在lastupdated快取檔案,重新整理也不會重新下載。本地倉庫中,根據依賴的gav屬性依次向下查詢資料夾,最終刪除內部的檔案,重新整理重新下載即可!
例如:當我們匯入一個Druid的依賴的時候報錯
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
我們需要在本地倉庫的目錄中去查詢依賴的位置