Подтвердить что ты не робот

Ошибка при развертывании артефакта в 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

и получить ошибку. Любая идея?

4b9b3361

Ответ 1

Несколько вещей, о которых я могу думать:

  • неверные учетные данные пользователя
  • URL-адрес сервера неверен
  • Пользователь не имеет доступа к репозиторию развертывания
  • Пользователь не имеет доступа к целевой целевой репозитории
  • Артефакт уже развернут с этой версией, если это версия (не версия SNAPSHOT)
  • репозиторий не подходит для развертывания соответствующего артефакта (например, репозитория выпуска для моментальной копии, репозитория прокси или группы вместо размещенного репозитория)

Проверьте их, и если вы все еще сталкиваетесь с проблемой, укажите более подробную информацию.

Ответ 2

Просто для создания отдельного ответа. Ответ действительно найден в комментарии для принятого ответа.

Попробуйте изменить версию артефакта до конца с помощью -SNAPSHOT.

Ответ 4

У меня была эта точная проблема сегодня, и проблема заключалась в том, что версия, которую я пыталась выпустить: выполнить было уже в репозитории Nexus.

В моем случае это, вероятно, связано с отключением сети во время более раннего вызова выпуска: выполнить. Несмотря на то, что я потерял связь, кажется, что релиз преуспел.

Ответ 5

В редком случае, когда вам нужно перераспределить артефакт SAME STABLE в Nexus, он по умолчанию не удастся. Если вы удалите артефакт из Nexus (через веб-интерфейс) с целью его повторного развертывания, развертывание по-прежнему будет терпеть неудачу, поскольку просто удалите, например, jar или pom не очищает другие файлы, все еще лежащие в каталоге. Вам необходимо войти в поле и полностью удалить каталог.

Ответ 6

400 Bad Request будет возвращен, если вы попытаетесь:

  1. Развертывание артефакта (или версии) моментального снимка, оканчивающегося на -SNAPSHOT, в репозиторий выпуска
  2. Развертывание артефакта выпуска (версия не заканчивается на -SNAPSHOT) в хранилище снимков
  3. Развертывание одной и той же версии артефакта выпуска более одного раза в репозитории выпуска

Ответ 7

  • в родительском приложении pom == > Версия помещает тег следующим образом: x.x.x-SNAPSHOT

пример: 0.0.1-SNAPSHOT

  • "- SNAPSHOT": очень важно

Ответ 8

Убедитесь, что не существует (артефакт и версия) в nexus (как релиз). В этом случае возвратите неверный запрос.

Ответ 9

У меня была такая же проблема сегодня с добавлением "Код возврата: 400, ReasonPhrase: Bad Request". который оказался "артефактом, уже развернутым с этой версией, если это проблема с выпуском" из ответа выше введите здесь описание ссылки

Одно из решений, еще не упомянутое, - это настроить Nexus, чтобы разрешить перераспределение в репозиторий выпуска. Возможно, это не лучшая практика, потому что это установлено по какой-то причине, но вы тем не менее можете перейти в "Настройки доступа" в своих "Репозиториях Nexus" "Конфигурация" -Tab и установить "Политика развертывания" на "Разрешить повторное развертывание".

Ответ 10

Если какой-либо из приведенных выше ответов сработал, Вы можете создать новый артефакт непосредственно со стороны администратора (снимок экрана NEXUS прилагается ниже).

  1. Login to nexus UI http://YOUR_URL: 8081/nexus (имя пользователя: пароль администратора по умолчанию: admin123)
  2. Click repositories на левой стороне, затем нажмите Click repositories, например, для: нажмите релиз.
  3. Выберите artifact Upload (последняя вкладка).
  4. Выберите GAV definition как GAV Param - Затем введите GroupID, артефакт идентификатор и версию.
  5. Выберите файл Jar.
  6. Нажмите загрузить артефакт. Это оно !

Теперь вы сможете добавить соответствующие ссылки в ваш проект (скриншот ниже).

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- изменить номер версии