wget не работает для загрузки файла jar из репозитория maven

#java #maven #jar #wget #guava

#java #maven #jar #wget #гуава

Вопрос:

Я пытаюсь загрузить один файл jar из репозитория maven по URL-адресу ниже.

http://repo1.maven.org/maven2/com/google/guava/guava-testlib/10.0/guava-testlib-10.0.jar

  • Загрузка в браузере работает нормально, и я получаю файл, как и ожидалось.

  • ‘wget’ что-то загружает, но полученный файл, похоже, недействителен. Запуск ‘jar -tf’ для загруженного файла выдает ‘Исключение ZipException: ошибка при открытии zip-файла’.

  • Загрузка файла программно из Java (‘InputStream’ из URL-адреса, записываемого в ‘FileOutputStream’), загружает что-то и создает файл. Открывая его с помощью WinZip / 7-Zip, оказывается, что он содержит один файл с именем ‘guava-testlib-10.0’, который выглядит как архив jar, который я ожидал получить.

  • wget другой jar работает, как и ожидалось, по крайней мере, иногда (со -U строкой агента пользователя)

Это какое-то хитроумное взаимодействие между wget / maven или Java / maven? Является ли это искаженным файлом jar, который мой браузер понимает и загружает правильно? Оба они кажутся мне немного неправдоподобными.

Ответ №1:

wget обычно блокируется из центрального репозитория maven, потому что некоторые люди не играют красиво и пытаются wget слишком много. Попробуйте установить пользовательский агент:

 wget -U "Any User Agent" http://repo1.maven.org/maven2/com/google/guava/guava-testlib/10.0/guava-testlib-10.0.jar
  

Комментарии:

1. Агент пользователя, похоже, не имеет никакого значения. С или без, он загружает что-то, просто не то, что нужно. Интересно, что он больше не позволяет мне создавать исходные файлы jar без пользовательского агента, так что, возможно, это как-то связано с этим.

2. Без пользовательского агента код возврата равен 403 (неавторизованный). Не уверен, почему вы все еще получаете .jar:-/ Можете ли вы скопировать / вставить вывод wget здесь?

3. Хорошо, сегодня wget без пользовательского агента выдает значение 403, и теперь загрузка работает правильно, если я использую пользовательский агент. Я полагаю, что jar мог измениться за одну ночь?