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

时间:2014-08-15 19:27:50

标签: 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并得到:

  

使用配置的用户名和密码   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

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

我也找到了the article by Sonatype Nexus which describes possible causes of 400's,而且似乎也没有。

如果您注意到我指向的存储库,它直接指向存储库,但随后在错误消息中列出了指向组的路径。我认为这可能有点相关,但如果是这样......我不知道如何解决它,因为这似乎发生在Releases Plugin内部。

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

2 个答案:

答案 0 :(得分:2)

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

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

  1. 上传到SNAPSHOT存储库时,必须提供版本号 是x-SNAPSHOT模式,其中x可以是任何东西(?)。
  2. 使用Nexus ReST时无法上传到SNAPSHOT存储库 API。这实际上并没有影响我的具体解决方案,但是 对于可能遇到这个问题的其他人来说值得注意。
  3. 上传到NON-SNAPSHOT存储库时,您的版本号不能 是x-SNAPSHOT模式。

答案 1 :(得分:0)

鉴于.m2目录中的镜像设置,grails发布插件将尝试部署xif镜像匹配您要部署到的位置时出现问题。您可以删除镜像设置或将其更改为与目标仓库不匹配。查看这些jiras了解更多信息: