我在Nexus服务器的自己的存储库中部署工件时遇到错误:“无法部署工件:无法传输工件”“无法传输文件http:/// my_artifact . 返回代码为:400”
我让Nexus运行一个自定义存储库my_repo与下一个maven本地配置:
的settings.xml
<server>
<id>my_repo</id>
<username>user</username>
<password>pass</password>
</server>
...
<mirror>
<id>my_repo</id>
<name>Repo Mirror</name>
<url><my_url_to_my_repo></url>
<mirrorOf>*</mirrorOf>
</mirror>
- 用户有权创建/读/写入my_repo -
的pom.xml
<distributionManagement>
<repository>
<id>my_repo</id>
<name>my_repo</name>
<url><my_url_to_my_repo></url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshots</name>
<url><my_url_to_my_snapshot_repo></url>
</snapshotRepository>
</distributionManagement>
然后我执行
mvn deploy
并得到错误 . 任何的想法?
10 回答
我能想到几件事:
用户凭据错误
url到服务器是错误的
用户无权访问部署存储库
用户无权访问特定的存储库目标
如果它是一个版本(不是-SNAPSHOT版本),已经使用该版本部署了
工件
存储库不适合部署相应的工件(例如,快照版本,代理存储库或组的发布存储库而不是托管存储库)
检查这些,如果仍然遇到麻烦,请在此处提供更多详细信息 .
只是为了创建一个单独的答案 . 答案实际上是在对已接受答案的评论中找到的 .
尝试将artefact的版本更改为以
-SNAPSHOT
结尾 .对我来说问题的原因是-source.jars被上传了两次(使用maven-source-plugin),这是被接受的答案中的原因之一 . 重定向回答我提到的问题:Maven release plugin fails : source artifacts getting deployed twice
我今天遇到了这个问题,问题是我试图发布的版本:执行已经在Nexus回购中 .
在我的情况下,这可能是由于在早期调用release:perform期间网络断开连接 . 即使我丢失了连接,但似乎发布成功了 .
在极少数情况下,您需要将SAME STABLE工件重新部署到Nexus,默认情况下它将失败 . 如果您随后从Nexus中删除工件(通过Web界面)以再次部署它,则部署仍然会失败,因为只需删除例如jar或pom不会清除目录中仍然存在的其他文件 . 您需要登录该框并完整删除该目录 .
父pom应用程序中的
示例:0.0.1-SNAPSHOT
确保在nexus中已经不存在(工件和版本)(作为发布) . 在那种情况下返回Bad Request .
我今天遇到了同样的问题,加上"Return code is: 400, ReasonPhrase: Bad Request.",结果证明"artifact is already deployed with that version if it is a release"问题来自上面的回答enter link description here
尚未提及的一个解决方案是配置Nexus以允许重新部署到Release存储库 . 也许不是最佳做法,因为这是有原因的,但您可以在Nexus存储库的“配置”-Tab中进入“访问设置”并将“部署策略”设置为“允许重新部署” .
如果上述任何答案得以解决,您可以直接从(下方附带的NEXUS屏幕截图)的管理端创建新工件 .
Login to nexus
UI http://YOUR_URL:8081/nexus(用户名: admin 默认密码: admin123 )在左侧
Click repositories
然后单击repo,例如:单击释放 .选择
artifact Upload
(最后一个标签) .选择
GAV definition
作为GAV Param
- 然后输入您的groupid,工件ID和版本 .选择Jar文件 .
点击上传工件 . 而已 !
现在,您将能够在项目中添加corrsponding . (截图如下)
如果您尝试以下情况,将退回400 Bad Request:
将以-SNAPSHOT结尾的 snapshot 工件(或版本)部署到 release 存储库
将 release 工件(版本 not ,以-SNAPSHOT结尾)部署到 snapshot 存储库