跨平台項目管理工具,核心三大職能:項目構建(清理→編譯→測試→報告→打包→部署)、依賴管理(自動下載傳遞性依賴、統一版本調解)、項目信息管理(坐標、文檔、團隊、SCM、CI)。
# 1. 解壓到 ~/opt/apache-maven-3.9.x # 2. 編輯 ~/.zshrc (或 ~/.bash_profile) export MAVEN_HOME=~/opt/apache-maven-3.9.x export PATH=$MAVEN_HOME/bin:$PATH # 3. 生效 source ~/.zshrc # 4. 驗證 mvn -v # Apache Maven 3.9.x ... Java version: 1.8.0_xxx
project-root ├── pom.xml ├── src │ ├── main │ │ ├── java # 生產代碼 │ │ └── resources # 配置文件、屬性文件 │ └── test │ ├── java # 測試代碼 │ └── resources # 測試資源 └── target # 構建輸出(class、jar、war、報告)
src/main/java/com/xxlxx/maven/hello/HelloMaven.java。pom.xml(四大坐標必填):
<project xmlns="https://maven.apache.org/POM/4.0.0"> <modelVersion>4.0.0</modelVersion> <groupId>com.xxlxx.maven.hello</groupId> <artifactId>hello-maven</artifactId> <version>SNAPSHOT-0.0.1</version> </project>
mvn compile → 生成 target/classes 下的 .class 文件。mvn clean → 刪除 target 目錄。三套獨立生命周期:
命令如 mvn clean install 會依次觸發 clean 生命周期至 clean、default 生命周期至 install。
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.30</version> <scope>compile</scope> <!-- 默認:編譯/測試/運行均需 --> </dependency>
Scope 作用域:compile(默認) > test > provided > runtime > system > import。Maven 自動解析依賴樹,下載間接依賴。
| 類型 | 位置 | 作用 |
|---|---|---|
| 本地倉庫 | ~/.m2/repository | 緩存所有下載構件,二次構建極快 |
| 中央倉庫 | repo.maven.apache.org | 官方默認遠程源 |
| 私服 | Nexus/Artifactory | 企業內網鏡像、發布私有構件、加速 |
| 遠程鏡像 | 阿里云/騰訊云 | 國內下載加速 |
$MAVEN_HOME/conf/settings.xml,影響所有用戶。~/.m2/settings.xml,覆蓋全局,**推薦修改此處**。<settings>
<localRepository>/custom/path/repo</localRepository> <!-- 自定義本地倉庫 -->
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk18</id>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</profile>
</profiles>
<activeProfiles><activeProfile>jdk18</activeProfile></activeProfiles>
</settings>
| 命令 | 作用 |
|---|---|
mvn clean compile | 清理並編譯主代碼 |
mvn test | 運行單元測試 |
mvn package | 打包(jar/war),跳過測試加 -DskipTests |
mvn install | 安裝到本地倉庫,供其他模塊依賴 |
mvn deploy | 發布到私服 |
mvn dependency:tree | 查看依賴樹,排查衝突 |
mvn help:effective-pom | 查看合併後的完整 POM |
mvn archetype:generate | 從原型快速生成項目骨架 |
<properties> 統一管理版本號,避免散落。test,容器提供 API 用 provided。dependencyManagement:父 POM 統一版本,子模塊無需寫版本號。pom.xml,IDE 自動識別 Maven 項目。