我在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.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
并得到错误。有什么想法吗?
答案 0 :(得分:127)
我能想到的几件事:
检查这些,如果仍然遇到问题,请在此处提供更多详细信息。
答案 1 :(得分:29)
只是为了创建一个单独的答案。答案实际上是在对已接受答案的评论中找到的。
尝试将您的人工制品版本更改为-SNAPSHOT
。
答案 2 :(得分:8)
问题的原因是-source.jars上传了两次(使用maven-source-plugin),这是被接受的答案中的原因之一。重定向回答我提到的: Maven release plugin fails : source artifacts getting deployed twice
答案 3 :(得分:7)
我今天遇到了这个问题,问题是我试图发布的版本:执行已经在Nexus回购中了。
在我的情况下,这可能是由于在早期调用release:perform期间网络断开连接。即使我丢失了连接,看起来发布也成功了。
答案 4 :(得分:6)
在极少数情况下,您需要将相同的STABLE工件重新部署到Nexus,默认情况下它将失败。然后,如果您再次从Nexus中删除工件(通过Web界面)以再次部署它,则部署仍然会失败,因为只需删除例如jar或pom不会清除目录中仍然存在的其他文件。您需要登录该框并完整删除该目录。
答案 5 :(得分:3)
示例:0.0.1-SNAPSHOT
答案 6 :(得分:3)
如果您尝试执行以下操作,则会返回400错误请求:
答案 7 :(得分:2)
确保在nexus中已经不存在(工件和版本)(作为发布)。在那种情况下,返回Bad Request。
答案 8 :(得分:2)
今天我遇到了同样的问题,“返回代码是:400,ReasonPhrase:Bad Request”。从上面的回答enter link description here
开始,结果证明“工件已经部署了该版本,如果它是一个版本”尚未提及的一个解决方案是配置Nexus以允许重新部署到Release存储库。也许不是最佳做法,因为这是有原因的,但您可以在Nexus存储库的“配置”-Tab中进入“访问设置”并将“部署策略”设置为“允许重新部署”。
答案 9 :(得分:1)
如果上述任何一个问题得以解决,您可以直接从(下方附带NEXUS屏幕截图)的管理端创建新工件。
Login to nexus
用户界面http://YOUR_URL:8081/nexus(用户名:管理员
默认密码: admin123 )Click repositories
然后点击回购,例如:点击发布。artifact Upload
(最后一个标签)。 GAV definition
为GAV Param
- 然后输入您的groupid,工件ID和版本。现在,您可以在项目中添加相应的内容。(截图如下)
答案 10 :(得分:0)
如果您有关于版本的命名策略,并且禁止尝试部署的版本号,则也会发生这种情况。以我为例,我试图上传一个版本(以发布回购版本)2.0.1
,但后来发现我们的关系配置不允许发布除整数以外的任何内容。
我稍后尝试使用版本2
,并成功部署了它。
错误消息绝对无济于事:
Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases-xxx. -> [Help 1]
一个更好的消息应该是version 2.0.1 violates naming policy
答案 11 :(得分:0)
对于400错误,请检查存储库“部署策略”,通常是其“禁用重新部署”。大多数情况下,您的库版本已经存在,这就是为什么您收到消息“无法PUT放置'https://yoururl/some.jar'的原因。从服务器收到状态码400:存储库不允许更新资产:“您的存储库名称” < / p>
因此,您可以选择一些方法来解决此问题。 1-允许重新部署 2-从您要上载的存储库中删除版本 3-更改版本号
答案 12 :(得分:0)
服务器ID应与Maven settings.xml的存储库ID匹配
答案 13 :(得分:0)
答案为时已晚,但这对我有用: Changing "Deployment Policy" to "Allow redeploy"