Почему я получаю 400 при попытке использовать публиковать плагин из плагина Grails Release

Я использую Grails 2.4.1 и плагин Grails Release версии 3.0.1.

У меня есть установка репозитория Sonatype Nexus (v2.3.1-01), которая используется в нескольких других проектах без проблем.

Я пытаюсь создать новый плагин, который я хочу распространять через репозиторий SNAPSHOT в Nexus (и позже через наш репозиторий Releases).

В моем файле ${projectName}GrailsPlugin.groovy у меня есть:

def groupId ="my-department-grails-plugins"
def version = "0.1-SNAPSHOT"

В моем файле application.properties у меня есть:

app.name=MyPluginNameForGrails

В моем BuildConfig.groovy у меня есть:

grails.project.repos.newsnapshots.url = "http://internal.server.address/nexus/service/local/repositories/snapshots"
grails.project.repos.newsnapshots.username = "username"
grails.project.repos.newsnapshots.password = "password"

Я пытаюсь начать с помощью следующей команды:

плагин публикации --snapshot --repository=newsnapshots --stacktrace

Успешная сборка все выглядит хорошо, пока не попытается войти в нексус, и я получу:

Использование настроенного имени пользователя и пароля из grails.project.repos.newsnapshots .... Ошибка | Не удалось опубликовать плагин: Ошибка при развертывании артефакта 'ald-grails-plugins:my-plugin-name-for-grails:zip': Ошибка при развертывании артефакта: Не удалось передать файл: http://internal.server.address/nexus/content/groups/public/my-department-grails-plugins/my-plugin-name-for-grails/0.1-SNAPSHOT/my-plugin-name-for-grails-0.1-20140815.191240-1.zip. Код возврата: 400

Я нашел связанный вопрос Stackru, который кажется связанным, но ни одно из условий, которые они описывают как вызывающие 400, не существует.

Я также нашел статью Sonatype Nexus, в которой описываются возможные причины 400-х годов, и, похоже, это тоже не так.

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

Я также должен добавить, что я удалил -SNAPSHOT из файла GrailsPlugin.groovy и изменил целевой репозиторий на наш репозиторий RELEASES с точно таким же результатом.

2 ответа

Решение

Моя проблема была из-за зеркала, определенного в моем файле.m2/settings.xml (спасибо Jeff Beck за комментарий, который привел к решению!). Это вызывало перенаправление POST в хранилище в общедоступную ГРУППУ, которая не позволяла загружать артефакт.

Есть несколько других вторичных причин, которые способствовали моим проблемам с устранением неполадок:

  1. При загрузке в репозиторий SNAPSHOT номер вашей версии должен соответствовать шаблону x-SNAPSHOT, где x может быть чем угодно (?).
  2. Вы не можете загружать в репозиторий SNAPSHOT при использовании Nexus ReST API. Это на самом деле не повлияло на мое конкретное решение, но стоит отметить, что другие могут столкнуться с этой проблемой.
  3. При загрузке в репозиторий NON-SNAPSHOT номер вашей версии НЕ ДОЛЖЕН соответствовать шаблону x-SNAPSHOT.

Учитывая настройку зеркала в каталоге.m2, плагин Grails Release будет иметь проблемы при попытке развернуть, если зеркала совпадает с тем местом, куда вы развертываете. Вы можете удалить настройку зеркала или изменить ее, чтобы она не соответствовала вашему целевому репо. Проверьте эти jiras для получения дополнительной информации:

Другие вопросы по тегам