Maven 工具介紹
Maven是Apache組織下的一個跨平臺的項目管理工具,它主要用來幫助實現項目的構建、測試、打包和部署。Maven 提供了標準的軟件生命周期模型和構建模型,通過配置就能對項目進行全面的管理。它的跨平臺性保證了在不同的操作系統上可以使用相同的命令來完成相應的任務。Maven 將構建的過程抽象成一個個的生命周期過程,在不同的階段使用不同的已實現插件來完成相應的實際工作,這種設計方法極大的避免了設計和腳本編碼的重復,極大的實現了復用。
Maven 是一個基于項目對象模型(POM)的構建工具,用于 Java 項目的依賴管理、構建和生命周期管理。其主要特點包括:
- 依賴管理:通過
pom.xml
文件自動下載和管理項目依賴。 - 標準化項目結構:提供統一的目錄布局,便于團隊協作。
- 構建生命周期:定義清晰的構建階段(如編譯、測試、打包、部署)。
- 插件體系:支持通過插件擴展功能(如編譯、靜態分析等)。
Maven 下載與安裝
-
下載 Maven
- 訪問 Apache Maven 官網,選擇最新穩定版本的二進制壓縮包(如
apache-maven-3.8.6-bin.zip
)。 - 解壓到本地目錄(如
C:\Program Files\apache-maven-3.8.6
)。
- 訪問 Apache Maven 官網,選擇最新穩定版本的二進制壓縮包(如
-
配置環境變量
- 添加系統變量
MAVEN_HOME
,值為 Maven 解壓路徑(如C:\Program Files\apache-maven-3.8.6
)。 - 編輯
Path
變量,追加%MAVEN_HOME%\bin
。 - 驗證安裝:命令行運行
mvn -v
,輸出版本信息即表示成功。
- 添加系統變量
Maven 核心配置文件
POM 即 Project Object Module,項目對象模型,在 pom.xml 文件中定義了項目的基本信息、源代碼、配置文件、開發者的信息和角色、問題追蹤系統、組織信息、項目授權、項目的 url、以及構建項目所用的插件,依賴繼承關系。開發人員需按照 maven 定義的規則進行 POM 文件的編寫。
groupId 定義了項目屬于哪個組,這有助于在大的范圍上區別項目。
artifactId 定義了這個項目在組中唯一的 ID,通常是工程的名稱。
groupId 和 artifactId 一起定義了artifact 在倉庫中的位置。
version 項目版本。
pom.xml
:項目根配置文件,包含以下關鍵部分:<project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <!-- 組織標識 --> <artifactId>my-project</artifactId> <!-- 項目標識 --> <version>1.0.0</version> <!-- 版本號 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
Maven 常用命令詳解
項目生命周期命令
-
清理編譯輸出
mvn clean
刪除
target
目錄及其內容。 -
編譯項目
mvn compile
生成
.class
文件到target/classes
目錄。 -
運行測試
mvn test
執行
src/test/java
下的單元測試。 -
打包項目
mvn package
生成 JAR/WAR 文件到
target
目錄。 -
安裝到本地倉庫
mvn install
將構建的產物安裝到本地 Maven 倉庫(默認
~/.m2/repository
)。 -
跳過測試
mvn install -DskipTests
依賴與插件管理
-
手動下載依賴
mvn dependency:resolve
-
生成依賴樹
mvn dependency:tree
-
運行插件目標
mvn archetype:generate # 使用 archetype 插件生成項目骨架
Maven 倉庫類型
- 本地倉庫:本地磁盤上的依賴緩存目錄(默認
~/.m2/repository
)。 - 中央倉庫:Maven 官方維護的公共倉庫(無需配置)。
- 私服倉庫:如 Nexus、Artifactory,需在
pom.xml
或settings.xml
中配置。
配置優化建議
-
鏡像加速
修改settings.xml
(位于~/.m2/
),添加阿里云鏡像:<mirror> <id>aliyun</id> <mirrorOf>central</mirrorOf> <url>https://maven.aliyun.com/repository/central</url> </mirror>
-
多模塊管理
使用<modules>
標簽在父 POM 中聚合子模塊:<modules> <module>module1</module> <module>module2</module> </modules>