首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Maven 入門完全指南:核心概念、標準目錄、生命周期、常用命令與 IDEA 整合

     編輯:Java 綜合教學

什麼是 Maven?

Maven(意第緒語「知識積累」)是 Apache 旗下**項目構建與依賴管理工具**。它解決了 Ant 時代的痛點:

  • 統一構建流程(標準生命周期)
  • 依賴傳遞管理(中央倉庫、坐標體系)
  • 項目資訊標準化(POM)
  • 跨項目復用(插件、原型)

核心理念:**約定優於配置**,遵循標準目錄結構,零配置即可構建。

安裝與驗證

  1. 下載:Binary zip
  2. 解壓到無中文無空格路徑(如 D:\dev\apache-maven-3.9.6)
  3. 配置環境變量:
    • MAVEN_HOME = D:\dev\apache-maven-3.9.6
    • Path 追加 %MAVEN_HOME%\bin
  4. 驗證:mvn -version
    Apache Maven 3.9.6
    Maven home: D:\dev\apache-maven-3.9.6
    Java version: 17.0.9, vendor: Oracle Corporation
    Default locale: zh_CN, platform encoding: UTF-8
    OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"

核心配置:settings.xml

位置:${MAVEN_HOME}/conf/settings.xml(全局)或 ~/.m2/settings.xml(用戶級,推薦)

關鍵配置項

<settings>
  <!-- 本地倉庫路徑 -->
  <localRepository>D:/maven-repo</localRepository>

  <!-- 鏡像:阿里云中央倉庫加速 -->
  <mirrors>
    <mirror>
      <id>aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Aliyun Maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>

  <!-- JDK 編譯版本全局默認 -->
  <profiles>
    <profile>
      <id>jdk-17</id>
      <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    </profile>
  </profiles>
  <activeProfiles><activeProfile>jdk-17</activeProfile></activeProfiles>
</settings>

創建第一個 Maven 項目

mvn -B archetype:generate \
  -DarchetypeGroupId=org.apache.maven.archetypes \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DgroupId=com.myapp \
  -DartifactId=myapp \
  -Dversion=1.0-SNAPSHOT

-B 批次模式(非交互),生成標準目錄:

myapp
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── myapp
    │               └── App.java
    └── test
        └── java
            └── com
                └── myapp
                    └── AppTest.java

POM 核心元素解析

<project xmlns="https://maven.apache.org/POM/4.0.0" ...>
  <modelVersion>4.0.0</modelVersion>

  <!-- 坐標 GAV:全局唯一標識 -->
  <groupId>com.myapp</groupId>       <!-- 組織/公司域名反寫 -->
  <artifactId>myapp</artifactId>    <!-- 項目/模塊名 -->
  <version>1.0-SNAPSHOT</version>    <!-- 版本:SNAPSHOT=開發中,RELEASE=發布 -->
  <packaging>jar</packaging>         <!-- 打包類型:jar/war/pom/ear -->

  <name>myapp</name>                 <!-- 顯示名 -->
  <url>https://maven.apache.org</url> <!-- 項目站點 -->

  <properties>                       <!-- 自定義屬性,${key} 引用 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
  </properties>

  <dependencies>                     <!-- 依賴聲明 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>            <!-- 作用域:compile/test/provided/runtime/system/import -->
    </dependency>
  </dependencies>

  <build>
    <plugins>                        <!-- 插件配置 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
        <configuration>
          <source>17</source>
          <target>17</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

構建生命周期與常用命令

三套內置生命周期:

生命周期階段核心命令說明
default
(構建部署)
validate驗證項目正確性
compilemvn compile編譯主代碼 → target/classes
testmvn test編譯+運行測試 → target/test-classes、Surefire 報表
packagemvn package打包 → target/${artifactId}-${version}.jar
verifymvn verify集成測試、質量檢查
installmvn install安裝到本地倉庫 ~/.m2/repository,供其他項目依賴
deploymvn deploy發布到遠程私服
cleanpre-clean
cleanmvn clean刪除 target 目錄
post-clean
sitepre-site
sitemvn site生成項目站點文檔 → target/site
post-site
site-deploymvn site-deploy部署站點

組合命令實戰

  • mvn clean install -DskipTests:清理、編譯、測試(跳過)、打包、安裝本地倉庫(最常用)
  • mvn clean package -Pprod:啟用 prod Profile 打包
  • mvn dependency:tree:查看依賴樹,排查衝突
  • mvn dependency:analyze:檢查未使用/未聲明依賴
  • mvn help:effective-pom:查看合併後的有效 POM

依賴範圍 Scope 詳解

Scope編譯類路徑測試類路徑運行類路徑打包典型場景
compile (默認)✓✓✓✓項目核心依賴
test✗✓✗✗JUnit、Mockito
provided✓✓✗✗Servlet API、JSP API(容器已提供)
runtime✗✓✓✓JDBC 驅動
system✓✓✗✗本地 JAR(需 systemPath,不推薦)
import----BOM 依賴管理(dependencyManagement)

IDEA 整合 Maven 最佳實踐

  1. File → Settings → Build Tools → Maven:
    • Maven home directory:指向你的安裝目錄
    • User settings file:勾選 Override,指向 ~/.m2/settings.xml
    • Local repository:同步顯示 settings 中配置的路徑
  2. 導入項目:File → Open → 選擇 pom.xml → Open as Project
  3. 右側 Maven Tool Window:
    • Lifecycle:雙擊 install 一鍵構建
    • Plugins:雙擊插件目標執行
    • Dependencies:視圖依賴樹、排除傳遞依賴
  4. 自動導入:Settings → Build Tools → Maven → Importing → Import Maven projects automatically 勾選

多模塊項目聚合

# 父 POM (packaging=pom)
<modules>
  <module>myapp-common</module>
  <module>myapp-dao</module>
  <module>myapp-service</module>
  <module>myapp-web</module>
</modules>

<dependencyManagement>
  <dependencies>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.30</version></dependency>
    ...
  </dependencies>
</dependencyManagement>
  • 父 POM 統一版本管理 (dependencyManagement),子模塊引用時**省略 version**
  • 根目錄執行 mvn clean install 會按依賴順序構建所有模塊

總結

Maven 以 **POM 為核心、約定目錄結構、聲明式依賴、標準生命周期**,建立了 Java 項目構建的工業標準。掌握 **GAV 坐標、Scope 作用域、生命周期階段、settings.xml 鏡像配置、多模塊聚合**,即可駕馭 90% 的構建場景。進階方向:Profile 多環境、插件開發、BOM 管理、簽名發布、Maven Central 發佈。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved