Помилка під час розгортання артефакту в Nexus


102

Я отримую помилку під час розгортання артефакту у власному сховищі на сервері 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 -

пом.хмл

<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

і отримати помилку. Будь-яка ідея?


2
HTTP 400 означає "поганий запит". Я здогадуюсь, що одна з URL-адрес неправильна.
Марк О'Коннор

для мене проблема полягала в тому, що це не версія знімка.
maveroid

Відповіді:


156

Кілька речей, про які я можу придумати:

  • облікові дані користувачів неправильні
  • URL-адреса для сервера неправильна
  • користувач не має доступу до сховища розгортання
  • користувач не має доступу до конкретної цілі сховища
  • артефакт вже розгорнуто з цією версією, якщо це випуск (не версія -SNAPSHOT)
  • сховище не підходить для розгортання відповідного артефакту (наприклад, репортаж випуску для версії знімка, репо-проксі або група замість розміщеного сховища)

Перевірте їх, і якщо ви все-таки зіткнулися з проблемою, надайте тут більше деталей.


44
Я змінив версію свого артефакту на SNAPSHOT, а потім розгорнув і все було нормально. Тоді я зрозумів, що намагаюся розгорнути до групи Nexus (а не сховища Nexus), тому причиною моєї проблеми було: "URL-адреса мого сховища Nexus була неправильною"
1313

5
ВАЖЛИВО: "Артефакт вже розгорнуто з цією версією, якщо це реліз (не версія -SNAPSHOT)"
Bhushan

1
Врятував мій день ... Я видалив слово -SNAPSHOT з версії в pom.xml, тому його не вдалося розгорнути на nexus ... Я додав слово SNAPSHOT назад, і воно спрацювало ..
venugopal

3
На мій досвід, неправильні облікові дані призводять до 401, а не до 400. Суфіксація назви версії з "-SNAPSHOT" вирішила проблему для мене.
Маркус Юній Брут

1
ви можете просто змінити розгортання політики вашого сховища для того, щоб передислокувати
FURQAN

35

Просто для створення окремої відповіді. Відповідь насправді знаходимо в коментарі до прийнятої відповіді.

Спробуйте змінити версію свого артефакту на кінець -SNAPSHOT.


2
Ні, ви не пропускаєте всю суть, уважно прочитайте коментар, в якому вона згадується, "тому причиною моєї проблеми було:" URL-адреса мого сховища Nexus була неправильною "". І отримайте деяке уявлення про те, що мається на увазі "Код повернення: 400" (перед тим, як просто скопіювати коментарі хтось як відповідь)
kuhajeyan

13
Просто хотів прокоментувати тут, оскільки я потрапив на цю сторінку в пошуку. Я зіткнувся з тією ж 400 помилкою, і те, що тут казав bhagyas, є ключовим (хоча я цього не усвідомлював), якщо розгортання у сховищі знімків версія ОБОВ'ЯЗКОВО закінчиться на -SNAPSHOT. Моя версія була 1.13.0.SNAPSHOT, і я зайняв мені годину, щоб зрозуміти, що потрібно 1,13.0-SNAPSHOT.
Крейг

16

400 Поганий запит буде повернуто, якщо ви спробуєте:

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

12

Причиною проблеми для мене було -source.jars було завантажено двічі (із плагіном maven-source), як згадувалося як про одну із причин у прийнятій відповіді. Перенаправлення відповіді, на яку я посилався: Плагін Maven release не вдається: вихідні артефакти розгортаються двічі


7

Сьогодні у мене була така точна проблема, і проблема полягала в тому, що версія, яку я намагався випустити: виконувати вже в репортажі Nexus.

У моєму випадку це, ймовірно, пов’язане з відключенням мережі під час попереднього виклику випуску: виконайте. Незважаючи на те, що я втратив зв'язок, схоже, випуск вдався.


7

У тому рідкісному випадку, коли вам потрібно повторно застосувати артефакт SAME STABLE на Nexus, він за замовчуванням вийде з ладу. Якщо ви видалите артефакт із Nexus (через веб-інтерфейс) для того, щоб знову його розгортати, розгортання все одно не вдасться, оскільки просто видалення, наприклад, jar або pom, не очищає інші файли, які все ще зберігаються в каталозі. Вам потрібно увійти у вікно та видалити каталог у повному обсязі.


2
Просто для додання цього, якщо у вас немає інтерактивного доступу до сервера (я не - це керований вікно), ви можете видалити артефакт, що порушує вас, за допомогою HTTP DELETE. Для цього я використовую PostMan
Натан Рассел

Я не впевнений, чи це тому, що я використовую плагін S3 blobstore, але я не бачу структури каталогів, яка відповідає структурі repo. Чи є якийсь хитрість у визначенні, які бруки видалити? Усі мої файли названі хешем. content/vol-{01-43}/chap-{01-47}
Каталоги

Ви також можете видалити всі файли для випуску, перейшовши до каталогу випусків із сховища, замість того, щоб шукати артефакт у пошуку типу GAV. У вікні репозиторію можна клацнути правою кнопкою миші каталог, щоб отримати дію видалення для всіх файлів у цій GAV.
Крістіан Трімбл

3

У мене була та сама проблема сьогодні з додаванням "Код повернення: 400, ReasonPhrase: Неправильний запит". яка виявилася "артефакт вже розгорнуто з цією версією, якщо це випуск" з відповіді вище введіть опис посилання тут

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


3
  • у батьківському додатку pom ==> Версія помістіть тег наступним чином: xxx-SNAPSHOT

приклад: 0.0.1-SNAPSHOT

  • "-SNAPSHOT": дуже важливо

2

Переконайтесь у тому, що його вже немає (артефакт та версія) у nexus (як випуск). У такому випадку поверніть поганий запит.


2

На помилку 400 перевірте сховище "Політика розгортання", як правило, його "Вимкнути повторне розміщення". Більшу частину часу ваша бібліотечна версія вже є, тому ви отримали повідомлення "Не вдалося поставити PUT" https: //yoururl/some.jar ". Отриманий код статусу 400 від сервера: сховище не дозволяє оновити активи:" ваш назва сховища "

Отже, у вас є кілька варіантів вирішення цього питання. 1- дозволити повторне розміщення 2- видалити версію зі свого сховища, яку ви намагаєтеся завантажити 3, змінити номер версії


Дозволити повторне розміщення для сховищ випусків зазвичай не вважається хорошою практикою. Не робіть цього без розгляду.
Itaypk

1
@Itaypk ви праві, тому я запропонував кілька інших пропозицій. На мою думку, краще змінити версію.
Фуркан

1

Якщо будь-який з вищезазначених відповідей опрацьовано, Ви можете створити новий артефакт безпосередньо з адміністративної сторони (NEXUS Screen shot зроблено нижче)

  1. Login to nexusUI HTTP: // YOUR_URL: 8081 / нексус (псевдо: адміністратора по замовчуванням пароль: admin123 )
  2. Click repositories ліворуч потім натисніть репо, наприклад: натисніть кнопку звільнення.
  3. Виберіть artifact Upload (остання вкладка).
  4. Виберіть GAV definitionяк GAV Param- Потім введіть свій ідентифікатор групи, артефакт та версію.
  5. Виберіть файл Jar.
  6. Клацніть артефакт завантаження. Це воно !

Тепер ви зможете додати відповідний проект у своєму проекті (скріншот нижче)

введіть тут опис зображення


1

Це також може статися, якщо у вас є політика щодо іменування навколо версії, забороняючи версію #, яку ви намагаєтесь розгорнути. У моєму випадку я намагався завантажити версію (щоб випустити репо)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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.