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

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

У меня есть репозиторий Nexus Sonatype (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"

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

publish-plugin --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

Я нашел связанный вопрос StackOverflow, который кажется< /em> связаны, но ни одно из условий, которые они описывают как вызывающие 400, не существует.

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

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

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


person Randyaa    schedule 15.08.2014    source источник
comment
Можете ли вы опубликовать банку моментальных снимков из чего-то вроде gradle в том же репо с тем же пользовательским пропуском?   -  person Jeff Beck    schedule 17.08.2014
comment
Я попробовал эту простую команду curl, и она отлично сработала: curl -v -u имя пользователя: пароль --upload-file pom.xml internal.server.address/nexus/content/repositories/snapshots/   -  person Randyaa    schedule 18.08.2014
comment
Я использовал немного более сложную команду curl, использующую ReST API и включающую как мой файл pom, так и артефакт. Результатом были следующие 400: ‹html›‹body›‹error›Это репозиторий Maven SNAPSHOT, и ручная загрузка в него запрещена!‹/error›‹/body›‹/html›   -  person Randyaa    schedule 18.08.2014
comment
Использование той же команды curl, но с изменением репозитория на наш репозиторий релизов и версию 0.1 (вместо 0.1-SNAPSHOT), похоже, работает нормально.   -  person Randyaa    schedule 18.08.2014
comment
Я не уверен точно, в чем проблема. У меня не было проблем с нашим нексусом, возможно, он так настроен. извините, я не могу больше помочь   -  person Jeff Beck    schedule 18.08.2014
comment
В вашем конфигурационном файле .m2 нет никаких настроек зеркала? Я видел, как они вызывают проблемы.   -  person Jeff Beck    schedule 18.08.2014
comment
Да, были, и это решило проблему. Спасибо!   -  person Randyaa    schedule 18.08.2014


Ответы (2)


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

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

  1. При загрузке в репозиторий SNAPSHOT ваш номер версии должен иметь вид x-SNAPSHOT, где x может быть любым (?).
  2. Вы не можете загружать в репозиторий SNAPSHOT при использовании Nexus ReST API. На самом деле это не повлияло на мое конкретное решение, но стоит отметить для других, которые могут столкнуться с этой проблемой.
  3. При загрузке в репозиторий NON-SNAPSHOT ваш номер версии НЕ должен иметь шаблон x-SNAPSHOT.
person Randyaa    schedule 18.08.2014

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

person Jeff Beck    schedule 20.08.2014