Windows 上安裝下載并配置 Apache Maven

1. 下載 Maven

  1. 訪問官網
    打開?Apache Maven 下載頁面。

  2. 選擇版本
    下載最新的?Binary zip archive(例如?apache-maven-3.9.9-bin.zip)。

    注意:不要下載?-src?版本(那是源碼包)。

2. 解壓 Maven

  1. 將下載的?apache-maven-3.9.6-bin.zip?解壓到目標目錄,例如:

(注意不要有多余的空格,如下就行)

C:\Program Files\apache-maven-3.9.9

3. 配置環境變量

(1) 設置?MAVEN_HOME
  1. 右鍵?此電腦?→?屬性?→?高級系統設置?→?環境變量

  2. 在?系統變量?中點擊?新建

    • 變量名:MAVEN_HOME

    • 變量值:C:\Program Files\apache-maven-3.9.9(你的 Maven 解壓路徑)

如何驗證配置是否正確?

  1. 打開命令提示符(CMD),運行:

    echo %MAVEN_HOME%
    應輸出:C:\Program Files\apache-maven-3.9.9
(2) 添加 Maven 到?PATH
  1. 在?系統變量?中找到?Path?→?編輯?→?新建,添加:

    %MAVEN_HOME%\bin
  2. 點擊?確定?保存所有窗口。

4. 驗證安裝(注意要重啟后環境配置才能生效)

  1. 打開?命令提示符(CMD)?或?PowerShell,運行:

    mvn -version
  2. 成功輸出示例

    Apache Maven 3.9.9 (...)
    Maven home: C:\Program Files\apache-maven-3.9.9
    Java version: 1.8.0_451, vendor: Oracle Corporation
    

5. 配置 Maven 鏡像(可選,加速下載)

  1. 打開 Maven 的配置文件:

    C:\Program Files\apache-maven-3.9.9\conf\settings.xml

  2. 在?<mirrors>?標簽內添加阿里云鏡像:

    運行

    <mirror><id>aliyunmaven</id><name>阿里云公共倉庫</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>central</mirrorOf>
    </mirror>
    

常見問題解決

1.?mvn -version?報錯 “不是內部命令”
  • 檢查?MAVEN_HOME?和?PATH?是否配置正確。

  • 重啟 CMD 或 IDE(如 IntelliJ IDEA)使環境變量生效。

2. Java 版本不兼容
  • Maven 需要 JDK 1.7+,確保已安裝并配置?JAVA_HOME

    java -version  # 驗證 Java
    echo %JAVA_HOME%  # 檢查變量
3. 依賴下載失敗
  • 檢查網絡是否正常,或按?步驟 5?配置鏡像。


總結

步驟操作
1. 下載從官網獲取?apache-maven-*-bin.zip
2. 解壓放到無空格路徑(如?C:\Program Files\
3. 環境變量設置?MAVEN_HOME?和?PATH
4. 驗證mvn -version?檢查版本
5. 鏡像加速修改?settings.xml?使用阿里云

現在你可以用 Maven 管理 Java/Hadoop 項目了!如果需要編譯 Hadoop 源碼,只需在源碼目錄運行:

這條 Maven 命令是用于?編譯 Hadoop 源碼?或類似大型 Java 項目的專用指令

mvn clean package -Pdist,native -DskipTests -Dtar
參數/選項作用
mvn clean清理之前編譯生成的?target?目錄
package編譯源碼并打包(生成 JAR/WAR 等)
-Pdist,native激活 Maven 的?dist?和?native?兩個 Profile(特定編譯配置)
-DskipTests跳過單元測試(加速編譯)
-Dtar生成最終的?.tar.gz?分發包(Hadoop 專用)

詳細說明

  1. -Pdist,native

    • dist?Profile:
      啟用 Hadoop 的分布式打包配置,生成包含所有依賴的完整分發包。

    • native?Profile:
      編譯 Hadoop 的本地庫(如壓縮、加密等功能的 C/C++ 擴展,通過 JNI 調用)。

      若未啟用,Hadoop 會回退到純 Java 實現(性能可能降低)。

  2. -DskipTests

    • 跳過?mvn test?階段,避免耗時的單元測試和集成測試。

    • 適用場景:快速驗證編譯是否通過,或測試已在其他環節完成。

  3. -Dtar

    • 要求 Maven 最終生成一個?.tar.gz?格式的壓縮包(Hadoop 的二進制分發包)。

    • 輸出路徑:hadoop-dist/target/hadoop-3.3.6.tar.gz(以 Hadoop 3.3.6 為例)。

?

典型應用場景

  1. 從源碼編譯 Hadoop

    • 當你需要修改 Hadoop 源碼或使用特定平臺的本地庫時,通過此命令生成定制化版本。

    • 示例:

      # 進入 Hadoop 源碼目錄
      cd hadoop-3.3.6-src
      # 執行編譯
      mvn clean package -Pdist,native -DskipTests -Dtar
  2. 跨平臺兼容性

    • 在 Linux 上編譯時,-Pnative?會生成針對當前系統的本地庫(如?.so?文件)。

    • 在 Windows 上需額外安裝?Windows SDK?和?CMake。


注意事項

  1. 依賴環境

    • 需提前安裝:

      • JDK 8/11

      • Maven 3.6+

      • GCC/CMake(若啟用?-Pnative

    • 網絡暢通(需下載大量依賴)。

  2. 時間與資源

    • 首次編譯可能耗時?30 分鐘~2 小時(依賴下載和本地庫編譯)。

    • 建議內存 ≥4GB,磁盤空間 ≥10GB。

  3. 常見問題

    • 編譯失敗:檢查錯誤日志,常見原因包括:

      • 網絡問題(依賴下載失敗)

      • 缺少本地工具鏈(如?makeautoconf

      • 版本不兼容(如 JDK 過高)

    • 跳過本地庫:移除?-Pnative?僅編譯 Java 部分。


簡化命令對比

命令用途
mvn clean package僅編譯 Java 部分,不打包分發版
mvn package -DskipTests跳過測試,快速打包
mvn package -Pdist -Dtar生成分發包但不編譯本地庫

通過此命令,你可以高效構建定制化的 Hadoop 分發版。如需進一步優化,可調整?pom.xml?中的 Profile 配置。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906035.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906035.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

摩方 12 代 N200 迷你主機(Ubuntu 系統)WiFi 抓包環境配置教程

摩方12代N200迷你主機標配 Intel AX201無線網卡&#xff0c;支持 WiFi 6 協議&#xff08;802.11ax&#xff09;及藍牙5.2。此網卡兼容主流抓包工具&#xff0c;但需注意&#xff1a; 驅動兼容性&#xff1a;Ubuntu 20.04及以上內核版本&#xff08;5.4&#xff09;默認支持AX2…

輕量、優雅、高擴展的事件驅動框架——Hibiscus-Signal

在現代企業級應用中&#xff0c;事件驅動架構&#xff08;EDA&#xff09;已成為解耦系統、提升擴展性的利器。今天給大家推薦一個非常優秀的國產輕量級事件驅動框架 —— Hibiscus Signal&#xff0c;它不僅天然整合 Spring Boot&#xff0c;還提供完整的事件生命周期支持&…

集合-進階

Collection collection的遍歷方式 迭代器遍歷 不依賴索引 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class mycollection {public static void main(String[] args) {//1.創建集合并添加元素Collection<String> co…

【八股戰神篇】Java集合高頻面試題

專欄簡介 八股戰神篇專欄是基于各平臺共上千篇面經&#xff0c;上萬道面試題&#xff0c;進行綜合排序提煉出排序前百的高頻面試題&#xff0c;并對這些高頻八股進行關聯分析&#xff0c;將每個高頻面試題可能進行延伸的題目再次進行排序選出高頻延伸八股題。面試官都是以點破…

Android之橫向滑動列表

文章目錄 前言一、效果圖二、使用步驟1.xml布局2.代碼3.HomeHxBean3.adapter4.item布局5.兩個drawable 總結 前言 橫向滑動列表有多種實現方式&#xff0c;也可以用tablayout&#xff0c;也可以用recyclerview&#xff0c;今天主要介紹recyclerview。 一、效果圖 二、使用步驟…

關于物聯網的基礎知識(二)——物聯網體系結構分層

成長路上不孤單&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///計算機愛好者&#x1f60a;///持續分享所學&#x1f60a;///如有需要歡迎收藏轉發///&#x1f60a;】 今日分享關于物聯網的基礎知識&#xff08;二&a…

【機器人】復現 WMNav 具身導航 | 將VLM集成到世界模型中

WMNav 是由VLM視覺語言模型驅動的&#xff0c;基于世界模型的對象目標導航框架。 設計一種預測環境狀態的記憶策略&#xff0c;采用在線好奇心價值圖來量化存儲&#xff0c;目標在世界模型預測的各種場景中出現的可能性。 本文分享WMNav復現和模型推理的過程&#xff5e; 下…

英語學習5.17

attract &#x1f449; 前綴&#xff1a;at-&#xff08;朝向&#xff09; &#x1f449; 含義&#xff1a;吸引&#xff08;朝某處拉&#xff09; 例句&#xff1a;The flowers attract bees. &#xff08;花吸引蜜蜂。&#xff09; distract &#x1f449; 前綴&#xff…

【軟考 McCabe度量法】

McCabe度量法&#xff08;McCabe’s Cyclomatic Complexity&#xff09;是由Thomas McCabe提出的一種用于衡量程序模塊環路復雜性的軟件度量方法。它通過分析代碼的控制流結構來評估程序的復雜度&#xff0c;幫助開發者識別難以維護或測試風險較高的代碼區域。 一、McCabe度量法…

解讀 TypeScript 枚舉Enum

TypeScript 枚舉通過命名常量、類型安全和結構化組織&#xff0c;顯著提升代碼質量。使用時需根據場景選擇合適的類型&#xff08;數字、字符串或常量枚舉&#xff09;&#xff0c;并權衡性能與動態訪問需求。掌握其特性和使用的場景&#xff0c;能在復雜項目中有效提升代碼的可…

MODBUS RTU通信協議詳解與調試指南

一、MODBUS RTU簡介 MODBUS RTU&#xff08;Remote Terminal Unit&#xff09;是一種基于串行通信&#xff08;RS-485/RS-232&#xff09;的工業標準協議&#xff0c;采用二進制數據格式&#xff0c;具有高效、可靠的特點&#xff0c;廣泛應用于PLC、傳感器、變頻器等工業設備…

TCP/UDP協議原理和區別 筆記

從簡單到難吧 區別就是TCP一般用于安全穩定的需求&#xff0c;UDP一般用于不那么需要完全數據的需求&#xff0c;比如說直播&#xff0c;視頻等。 再然后就是TPC性能慢于UDP。 再然后我們看TCP的原理&#xff08;三次握手&#xff0c;數據傳輸&#xff0c;四次揮手&#xff0…

Jackson使用詳解

JSON Jackson是java提供處理json數據序列化和反序列的工具類&#xff0c;在使用Jackson處理json前&#xff0c;我們得先掌握json。 JSON數據類型 類型示例說明字符串&#xff08;String&#xff09;"hello"雙引號包裹&#xff0c;支持轉義字符&#xff08;如 \n&a…

C語言| 指針變量的定義

C語言| 指針的優點-CSDN博客 * 表示“指向”&#xff0c;為了說明指針變量和它所指向的變量之間的聯系。 int * i&#xff1b;//表示指針變量i里面存放的地址&#xff0c;所指向的存儲單元里的【數據】。 【指針變量的定義】 C語言規定所有變量&#xff0c;在使用前必須先定…

Java 快速轉 C# 教程

以下是一個針對 Java 開發者快速轉向 C# 的簡明教程&#xff0c;重點對比 Java 與 C# 的異同&#xff0c;幫助你快速上手。 項目結構&#xff1a; .sln &#xff1a;解決方案文件&#xff0c;管理多個項目之間的依賴關系。.csproj &#xff1a;項目文件&#xff0c;定義目標框…

EasyExcel詳解

文章目錄 一、easyExcel1.什么是easyExcel2.easyExcel示例demo3.easyExcel read的底層邏輯~~4.easyExcel write的底層邏輯~~ 二、FastExcel1.為什么更換為fastExcel2.fastExcel新功能 一、easyExcel 1.什么是easyExcel 內容摘自官方&#xff1a;Java解析、生成Excel比較有名的…

jvm安全點(三)openjdk17 c++源碼垃圾回收之安全點結束,喚醒線程

1. VMThread::inner_execute() - 觸發安全點?? cpp 復制 void VMThread::inner_execute(VM_Operation* op) { if (op->evaluate_at_safepoint()) { SafepointSynchronize::begin(); // 進入安全點&#xff0c;阻塞所有線程 // ...執行GC等操作... SafepointSynchronize::…

102. 二叉樹的層序遍歷遞歸法:深度優先搜索的巧妙應用

二叉樹的層序遍歷是一種經典的遍歷方式&#xff0c;它要求按層級逐層訪問二叉樹的節點。通常我們會使用隊列來實現層序遍歷&#xff0c;但遞歸法也是一種可行且有趣的思路。本文將深入探討遞歸法解決二叉樹層序遍歷的核心難點&#xff0c;并結合代碼和模擬過程進行詳細講解。 …

首個窗口級無人機配送VLN系統!中科院LogisticsVLN:基于MLLM實現精準投遞

導讀 隨著智能物流需求日益增長&#xff0c;特別是“最后一公里”配送場景的精細化&#xff0c;傳統地面機器人逐漸暴露出適應性差、精度不足等瓶頸。為此&#xff0c;本文提出了LogisticsVLN系統——一個基于多模態大語言模型的無人機視覺語言導航框架&#xff0c;專為窗戶級別…

WPF Datagrid 數據加載和性能

這篇文章并非討論 WPF Datagrid 的性能數據&#xff0c;而只是簡單介紹一下為了使其性能良好&#xff0c;你需要注意哪些方面。我不太想使用性能分析器來展示實際數據&#xff0c;而是盡可能地使用了 Stopwatch 類。這篇文章不會深入探討處理海量數據的技術&#xff0c;例如分頁…