maven - 为什么在尝试使用 Grails Release 插件中的 publish-plugin 时得到 400

标签 maven grails nexus snapshot grails-maven

我正在使用 Grails 2.4.1 & The Grails Release plugin版本 3.0.1。

我有一个 Sonatype nexus 存储库 (v2.3.1-01) 设置,其他几个项目都在使用它,没有任何问题。

我正在尝试创建一个新插件,我想通过 nexus 中的 SNAPSHOT 存储库(以及稍后通过我们的 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

构建成功一切看起来都很好,直到它尝试插入 nexus 并且我得到:

Using configured username and password from grails.project.repos.newsnapshots ....Error | Failed to publish plugin: Error deploying artifact 'ald-grails-plugins:my-plugin-name-for-grails:zip': Error deploying artifact: Failed to transfer file: 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. Return code is: 400

我找到了 a related StackOverflow question似乎相关,但他们描述的导致 400 的条件都不存在。

我还找到了the article by Sonatype Nexus which describes possible causes of 400's那些似乎也不是。

如果您注意到我指向的存储库,它直接指向一个存储库,但在错误消息中它列出了一个组的路径。我认为这可能以某种方式相关,但如果是这样......我不确定如何解决它,因为这似乎是在 Releases 插件内部以某种方式发生的。

我还应该补充一点,我已经从 GrailsPlugin.groovy 文件中删除了 -SNAPSHOT 并将目标存储库更改为我们的 RELEASES 存储库,结果完全相同。

最佳答案

我的问题是由于在我的 .m2/settings.xml 文件中定义了一个镜像(感谢 Jeff Beck 导致解决的评论!)。这导致存储库的 POST 被重定向到不允许上传 Artifact 的公共(public)组。

还有一些其他次要原因导致了我的故障排除问题:

  1. 上传到 SNAPSHOT 存储库时,您的版本号必须 是 x-SNAPSHOT 模式,其中 x 可以是任何东西(?)。
  2. 使用 Nexus ReST 时无法上传到 SNAPSHOT 存储库 应用程序接口(interface)。这实际上并没有最终影响我的具体解决方案,但是 其他可能遇到此问题的人值得注意。
  3. 上传到非快照存储库时,您的版本号不得 是 x-SNAPSHOT 模式。

关于maven - 为什么在尝试使用 Grails Release 插件中的 publish-plugin 时得到 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25332917/

相关文章:

grails - 在Grails中索引 “has many”属性

java - nexus 3 是否仍支持 osgi bundle 存储库 (obr)?

nexus - 将工件上传到 Nexus,无需 Maven

maven - Thingsboard 不是从源代码构建的

spring - java.lang.NoClassDefFoundError : org/slf4j/LoggerFactory Spring boot 1. 5.2 Maven

java - 如何在 Eclipse Mars 中构建和运行 BIRT 源代码

unit-testing - Grails 单元测试在其 Controller 中模拟域类

java - Gradle Application 插件的 Maven 替代(等效)

security - Grails Acegi手动登录

java - Nexus sonatype groovy 获取 LDAP 用户