【问题标题】:Command line too long on maven when building hadoop from source in windows 10在 Windows 10 中从源代码构建 hadoop 时命令行太长
【发布时间】:2020-05-15 17:40:48
【问题描述】:

我正在尝试按照this article 中的说明从源代码构建hadoop。在构建 Apache common 时,一切都失败并显示以下错误消息:command line too long

所以,这是我尝试过的(我会在尝试更多时更新):

  1. 如本文所述 Stackoverflow answer,克服这个错误的方法是尽可能缩短路径。因此,我将存储库文件从C:\user_name\.m2\repository\ 剪切到另一个目录并创建了一个空驱动器,并将其指向我已将文件移动到的这个新目录,就像这样 subst M: D:\maven-2.0.8\repository 并将“settings.xml”中的 <localRepository>M:</localRepository> 标签从 C:\apache-maven-2.0.8\conf 更改为指向 M:。完成所有这些之后,我重新启动系统并尝试再次构建 hadoop。但是,正如我从错误中看到的那样,maven 仍然将包下载到C:\Users\user_name\.m2\repository\,而不是M:,并且command line too long 错误的错误仍然存​​在。
  2. 为了尽可能缩短路径,我在C:\mrepo 中创建了一个目录,并将此目录符号链接到C:\user_name\.m2\repository\,如下所示:mklink /J C:\mrepo C:\Users\.m2\repository。完成所有这些之后,我重新启动系统并尝试再次构建 hadoop。但是,正如我从错误中看到的那样,maven 仍然将包下载到C:\Users\user_name\.m2\repository\,而不是M:,并且command line too long 错误的错误仍然存​​在。

编辑 1:

  1. 我还设置了一个名为M2_HOME 的环境变量,其值为M:\。并在我的 \conf\settings.xml 中进行了更改:<localRepository>${M2_HOME}</localRepository>。问题仍然存在。

如何解决这个问题并成功构建 hadoop?

【问题讨论】:

  • 好问题。您参考了另一篇 SO 帖子,因此您显然试图找出如何自行修复它。唯一缺少的是您使用的操作系统,尽管我从帖子中推断它是某种形式的 Windows。
  • 问题的标题有。这是 Windows 10。
  • 您是否在纯 Windows 命令行上运行构建?
  • @khmarbaise 我在“visual studio x64 win64 命令提示符”上完成了所有这些操作,我认为这是 Windows 命令行。
  • 所以这个问题的答案是:不。我不知道 Visual Studio,我也不使用它......所以第一个测试总是在普通命令行上进行测试,以消除可能发生的任何影响...

标签: maven hadoop windows-10 hadoop3


【解决方案1】:

你在使用IntelliJ吗?

因为在 IntelliJ 中,您有一些选项可以缩短命令行。 转到运行/调试配置。 缩短命令行,可以试试classpath文件选项。

您可以在this blog post找到更多信息。

【讨论】:

  • 不,我没有使用任何 IDE。我在 Visual Studio x64 命令提示符下执行此操作。
【解决方案2】:

如果您想将.m2 目录设置为明确的内容,您可以通过覆盖默认值来实现。

  • 所有用户: 编辑\conf\settings.xml 全局配置文件。将localRepository键的值改为本地仓库缓存的绝对路径。

  • 您的用户:我认为您应该能够在您的用户设置中设置M2_HOME 环境变量。

【讨论】:

  • 我不明白您所说的“到本地存储库缓存的绝对路径”是什么意思。我也将M2_Home 变量设置为我将存储库(来自`\..\user_name\.m2\repository`的文件)文件移动到的目录。
  • M2_HomeM2_HOME?我不知道它是否有区别,但它应该都是大写的。 Absolute paths 从驱动器的根目录枚举。对于 Windows,类似于 C:\M2_HOME。您是在 Visual Studio 中使用命令提示符,还是在 Visual Studio 中使用 PowerShell 提示符?前者将继承您的系统和用户环境变量,但 PowerShell 似乎没有,这是有道理的。
  • 我用过M2_HOME。我在 Visual Studio 中使用过命令提示符。
猜你喜欢
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多