Ошибка при развертывании артефакта в Nexus
Im 'получает ошибку при развертывании артефакта в моем собственном репозитории на сервере Nexus: "Не удалось развернуть артефакты: не удалось передать артефакт" "Не удалось передать файл http:///my_artifact. Код возврата: 400"
У меня Nexus работает с одним пользовательским репозиторием my_repo со следующей локальной конфигурацией maven:
settings.xml
<server>
<id>my_repo</id>
<username>user</username>
<password>pass</password>
</server>
...
<mirror>
<id>my_repo</id>
<name>Repo Mirror</name>
<url><my_url_to_my_repo></url>
<mirrorOf>*</mirrorOf>
</mirror>
- Пользователь имеет разрешения на создание/чтение/запись в my_repo -
pom.xml
<distributionManagement>
<repository>
<id>my_repo</id>
<name>my_repo</name>
<url><my_url_to_my_repo></url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshots</name>
<url><my_url_to_my_snapshot_repo></url>
</snapshotRepository>
</distributionManagement>
а затем я выполняю
mvn deploy
и получить ошибку. Любая идея?
Ответы
Ответ 1
Несколько вещей, о которых я могу думать:
- неверные учетные данные пользователя
- URL-адрес сервера неверен
- Пользователь не имеет доступа к репозиторию развертывания
- Пользователь не имеет доступа к целевой целевой репозитории
- Артефакт уже развернут с этой версией, если это версия (не версия SNAPSHOT)
- репозиторий не подходит для развертывания соответствующего артефакта (например, репозитория выпуска для моментальной копии, репозитория прокси или группы вместо размещенного репозитория)
Проверьте их, и если вы все еще сталкиваетесь с проблемой, укажите более подробную информацию.
Ответ 2
Просто для создания отдельного ответа. Ответ действительно найден в комментарии для принятого ответа.
Попробуйте изменить версию артефакта до конца с помощью -SNAPSHOT
.
Ответ 3
Причиной проблемы для меня было -source.jars загружалось дважды (с помощью maven -source -plugin), что упоминалось как одна из причин в принятом ответе. Перенаправление, чтобы ответить на этот вопрос: плагин релиза Maven не работает: исходные артефакты развертываются дважды
Ответ 4
У меня была эта точная проблема сегодня, и проблема заключалась в том, что версия, которую я пыталась выпустить: выполнить было уже в репозитории Nexus.
В моем случае это, вероятно, связано с отключением сети во время более раннего вызова выпуска: выполнить. Несмотря на то, что я потерял связь, кажется, что релиз преуспел.
Ответ 5
В редком случае, когда вам нужно перераспределить артефакт SAME STABLE в Nexus, он по умолчанию не удастся. Если вы удалите артефакт из Nexus (через веб-интерфейс) с целью его повторного развертывания, развертывание по-прежнему будет терпеть неудачу, поскольку просто удалите, например, jar или pom не очищает другие файлы, все еще лежащие в каталоге. Вам необходимо войти в поле и полностью удалить каталог.
Ответ 6
400 Bad Request будет возвращен, если вы попытаетесь:
- Развертывание артефакта (или версии) моментального снимка, оканчивающегося на -SNAPSHOT, в репозиторий выпуска
- Развертывание артефакта выпуска (версия не заканчивается на -SNAPSHOT) в хранилище снимков
- Развертывание одной и той же версии артефакта выпуска более одного раза в репозитории выпуска
Ответ 7
- в родительском приложении pom == > Версия помещает тег следующим образом: x.x.x-SNAPSHOT
пример: 0.0.1-SNAPSHOT
- "- SNAPSHOT": очень важно
Ответ 8
Убедитесь, что не существует (артефакт и версия) в nexus (как релиз). В этом случае возвратите неверный запрос.
Ответ 9
У меня была такая же проблема сегодня с добавлением "Код возврата: 400, ReasonPhrase: Bad Request". который оказался "артефактом, уже развернутым с этой версией, если это проблема с выпуском" из ответа выше введите здесь описание ссылки
Одно из решений, еще не упомянутое, - это настроить Nexus, чтобы разрешить перераспределение в репозиторий выпуска. Возможно, это не лучшая практика, потому что это установлено по какой-то причине, но вы тем не менее можете перейти в "Настройки доступа" в своих "Репозиториях Nexus" "Конфигурация" -Tab и установить "Политика развертывания" на "Разрешить повторное развертывание".
Ответ 10
Если какой-либо из приведенных выше ответов сработал, Вы можете создать новый артефакт непосредственно со стороны администратора (снимок экрана NEXUS прилагается ниже).
-
Login to nexus
UI http://YOUR_URL: 8081/nexus (имя пользователя: пароль администратора по умолчанию: admin123) -
Click repositories
на левой стороне, затем нажмите Click repositories
, например, для: нажмите релиз. - Выберите
artifact Upload
(последняя вкладка). - Выберите
GAV definition
как GAV Param
- Затем введите GroupID, артефакт идентификатор и версию. - Выберите файл Jar.
- Нажмите загрузить артефакт. Это оно !
Теперь вы сможете добавить соответствующие ссылки в ваш проект (скриншот ниже).
![enter image description here]()
Ответ 11
Это также может произойти, если у вас есть политика именования версий, запрещающая версию #, которую вы пытаетесь развернуть. В моем случае я пытался загрузить версию (для выпуска репо) 2.0.1
но позже обнаружил, что наша конфигурация Nexus не допускает ничего, кроме целого числа для выпусков.
Я попытался позже с версией 2
и развернул это успешно.
Сообщение об ошибке определенно не поможет:
Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases-xxx. -> [Help 1]
Лучшее сообщение могло быть, что version 2.0.1 violates naming policy
Ответ 12
Для ошибки 400 проверьте репозиторий "Политика развертывания", обычно его "Отключить повторное развертывание". Большую часть времени ваша версия библиотеки уже существует, поэтому вы получили сообщение "Не удалось PUT поместить" https://yoururl/some.jar ". Получил код состояния 400 от сервера: хранилище не позволяет обновлять ресурсы:" ваш имя хранилища "
Итак, у вас есть несколько вариантов решения этой проблемы. 1- разрешить повторное развертывание 2- удалить версию из репозитория, которую вы пытаетесь загрузить 3- изменить номер версии