Maven

xxxLin發表於2024-10-21

什麼是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>

依賴下載失敗錯誤解決方法

  1. 下載依賴時出現網路故障或倉庫伺服器當機等原因,導致無法連線至 Maven 倉庫,從而無法下載依賴。
  2. 依賴項的版本號或配置檔案中的版本號錯誤,或者依賴項沒有正確定義,導致 Maven 下載的依賴項與實際需要的不一致,從而引發錯誤。
  3. 本地 Maven 倉庫或快取被汙染或損壞,導致 Maven 無法正確地使用現有的依賴項。
    解決方案:
  4. 檢查網路連線和 Maven 倉庫伺服器狀態。
  5. 確保依賴項的版本號與專案對應的版本號匹配,並檢查 POM 檔案中的依賴項是否正確。
  6. 清除本地 Maven 倉庫快取(lastUpdated 檔案),因為只要存在lastupdated快取檔案,重新整理也不會重新下載。本地倉庫中,根據依賴的gav屬性依次向下查詢資料夾,最終刪除內部的檔案,重新整理重新下載即可!

例如:當我們匯入一個Druid的依賴的時候報錯

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.2.8</version>
</dependency>

我們需要在本地倉庫的目錄中去查詢依賴的位置
image

相關文章