我正在使用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存储库,结果完全相同。
答案 0 :(得分:2)
我的问题是由于我的.m2 / settings.xml文件中定义了一个镜像(感谢Jeff Beck获得导致解决方案的评论!)。这导致POST到存储库被重定向到公共GROUP,这不允许上传工件。
还有一些其他次要原因导致我的故障排除问题:
答案 1 :(得分:0)
鉴于.m2目录中的镜像设置,grails发布插件将尝试部署xif镜像匹配您要部署到的位置时出现问题。您可以删除镜像设置或将其更改为与目标仓库不匹配。查看这些jiras了解更多信息: