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.mzph.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;例如分页…