我在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>
pom.hml
<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
并得到错误。任何的想法?
我能想到几件事:
检查这些,如果仍然遇到麻烦,请在此处提供更多详细信息。
如果上述任何答案都解决了,您可以直接从管理端创建新工件(下面附带NEXUS屏幕截图)。
Login to nexus
UI http://YOUR_URL:8081/nexus(用户名:admin默认密码:admin123)Click repositories
然后单击repo,例如:单击释放。artifact Upload
(最后一个标签)。GAV definition
作为GAV Param
-然后输入你的groupid,工件ID和版本。现在,您将能够在项目中添加相应的内容。(截图如下)
如果您有版本的命名策略,禁止您尝试部署的版本#,也会发生这种情况。在我的情况下,我试图上传一个版本(发布回购)2.0.1
,但后来发现我们的nexus配置不允许发布以外的任何其他内容。
我后来尝试使用版本2
并成功部署它。
错误消息肯定没有帮助:
Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases-xxx. -> [Help 1]
一个更好的信息可能是version 2.0.1 violates naming policy
对于400错误,请检查存储库“部署策略”,通常是“禁用重新部署”。大部分时间你的库版本已经存在,这就是为什么你收到消息“无法PUT把'https://yoururl/some.jar'。从服务器接收状态代码400:存储库不允许更新资产:”你的存储库名称“
所以,你有几个选择来解决这个问题。 1-允许重新部署2-从您尝试上载的存储库中删除版本3-更改版本号
只是为了创建一个单独的答案。答案实际上是在对已接受答案的评论中找到的。
尝试将您的人工制品版本更改为以-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不会清除目录中仍然存在的其他文件。您需要登录该框并完整删除该目录。
如果您尝试以下情况,将退回400 Bad Request:
示例:0.0.1-SNAPSHOT
确保在nexus中已经不存在(工件和版本)(作为发布)。在那种情况下返回Bad Request。
我今天遇到了同样的问题,“返回代码是:400,ReasonPhrase:Bad Request”。原来是“神器已经部署了该版本,如果它是一个发布”问题来自enter link description here以上的答案
尚未提及的一个解决方案是配置Nexus以允许重新部署到Release存储库。也许不是最佳做法,因为这是有原因的,但您可以在Nexus存储库的“配置”-Tab中进入“访问设置”并将“部署策略”设置为“允许重新部署”。