Слишком длинная командная строка на maven при сборке хаупа из исходного кода в Windows 10

Я пытаюсь собрать hadoop из исходного кода, как описано в эта статья. При сборке общего Apache все выходит из строя с этим сообщением об ошибке: command line too long.

Итак, вот что я пробовал (я обновлю это, когда попробую больше):

  1. Как сказано в этом ответе Stackoverflow, чтобы преодолеть эту ошибку, нужно максимально сократить путь. Итак, я вырезал файлы репозитория из C:\user_name\.m2\repository\ в другой каталог, создал пустой диск и указал на этот новый каталог, в который я переместил файлы, например, subst M: D:\maven-2.0.8\repository, и изменил тег <localRepository>M:</localRepository> в settings.xml с C:\apache-maven-2.0.8\conf, чтобы указать на M:. И после всего этого я перезагружаю свою систему и снова пытаюсь собрать хауп. Но, как я вижу из ошибки, 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. И после всего этого я перезагружаю свою систему и снова пытаюсь собрать хауп. Но, как я вижу из ошибки, maven по-прежнему загружает пакеты в C:\Users\user_name\.m2\repository\, а не M:, и ошибка command line too long сохраняется.

ИЗМЕНИТЬ 1:

  1. Я также установил переменную среды с именем M2_HOME со значением M:\. И внес изменения в мой \conf\settings.xml: <localRepository>${M2_HOME}</localRepository>. Проблема все еще актуальна.

Как исправить это и успешно собрать хауп?


person Community    schedule 15.05.2020    source источник
comment
Хороший вопрос. Вы ссылаетесь на другой пост SO, поэтому вы явно пытались выяснить, как это исправить самостоятельно. Единственное, чего не хватает, это какую операционную систему вы используете, хотя из поста я делаю вывод, что это какая-то форма Windows.   -  person David Nedrow    schedule 16.05.2020
comment
В заголовке вопроса есть это. Это виндовс 10.   -  person Naveen Reddy Marthala    schedule 16.05.2020
comment
Вы строите запуск в простой командной строке Windows?   -  person khmarbaise    schedule 16.05.2020
comment
@khmarbaise Я сделал все это в командной строке Visual Studio x64 Win64, которая, как я полагаю, является командной строкой Windows.   -  person    schedule 16.05.2020
comment
Итак, ответ на этот вопрос: Нет. Я не знаю Visual Studio и не использую ее... поэтому первый тест всегда выполняется в простой командной строке, чтобы исключить любое влияние, которое может произойти...   -  person khmarbaise    schedule 16.05.2020


Ответы (2)


Вы используете IntelliJ?

Потому что в IntelliJ у вас есть несколько вариантов сокращения командной строки. Перейдите к настройкам запуска/отладки. Сократите командную строку, вы можете попробовать вариант файла пути к классам.

Дополнительную информацию об этом можно найти в этой записи в блоге.

person Jeroen Vandevelde    schedule 15.05.2020
comment
Нет, я не использую никакую IDE. Я делаю это в командной строке Visual Studio x64. - person ; 16.05.2020

Если вы хотите установить для каталога .m2 что-то явное, вы можете сделать это, переопределив значение по умолчанию.

  • Все пользователи: отредактируйте файл глобальной конфигурации \conf\settings.xml. Измените значение ключа localRepository на абсолютный путь к кэшу локального репозитория.

  • Ваш пользователь: я думаю, вы должны иметь возможность установить переменную среды M2_HOME в настройках пользователя.

person David Nedrow    schedule 16.05.2020
comment
Я не мог понять, что вы имели в виду под абсолютным путем к кешу локального репозитория. И я также установил переменную M2_Home в каталог, в который я переместил файлы репозитория (файлы из `\..\user_name\.m2\repository`). - person ; 16.05.2020
comment
M2_Home или M2_HOME? Я не знаю, имеет ли это значение, но все должно быть в верхнем регистре. Absolute paths нумеруются от корня диска. Для Windows что-то вроде C:\M2_HOME. Вы используете командную строку в Visual Studio или PowerShell в Visual Studio? Первый унаследует системные и пользовательские переменные среды, но, похоже, PowerShell этого не делает, что имеет смысл. - person David Nedrow; 18.05.2020
comment
Я использовал M2_HOME. И я использовал командную строку в Visual Studio. - person ; 18.05.2020