在Nexus中部署工件时出错
林'在我的自己的存储库中部署工件在Nexus服务器时出现错误:“无法部署工件:无法传输工件”“无法传输文件http:/// my_artifact。返回代码是:400”
我有Nexus运行一个自定义存储库my_repo与下一个maven本地configuration:
的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>
- 用户有权创build/读/写入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
并得到错误。 任何想法?
我能想到的一些东西:
- 用户凭据是错误的
- url到服务器是错误的
- 用户无权访问部署存储库
- 用户无权访问特定的存储库目标
- 如果它是发行版(不是-SNAPSHOT版本),那么已经使用该版本部署了工件
- 该存储库不适合部署相应的工件(例如,用于快照版本,代理服务器repo或组而不是托pipe存储库的发布回购)
检查那些,如果你仍然遇到麻烦提供更多的细节在这里。
只是为了创build一个单独的答案。 答案实际上是在接受答案的评论中find的。
尝试更改您的artefact的版本以-SNAPSHOT
结束。
我今天有这个确切的问题,问题是我试图释放的版本:执行已经在Nexus回购。
在我的情况下,这可能是由于在早期版本调用期间的networking断开连接:执行。 即使我失去了我的连接,它似乎释放成功。
在极less数情况下,您需要将相同的稳定工件重新部署到Nexus,默认情况下会失败。 如果您从Nexus(通过Web界面)删除工件以再次部署,则部署将仍然失败,因为仅删除例如jar或pom就不会清除仍在目录中的其他文件。 您需要login到该框并删除整个目录。
问题的原因是-source.jars被上传了两次(使用maven-source-plugin),被认为是接受答案中的原因之一。 redirect回答我提到:
Maven发布插件失败:源文件被部署两次
确保不存在(神器和版本)nexus(作为发行版)。 在这种情况下返回错误的请求。
我今天有同样的问题,加上“返回码是:400,ReasonPhrase:错误的请求”。 原来是“神器已经部署了该版本,如果是释放”问题,从上面的回答中input链接描述
尚未提及的一个解决scheme是将Nexusconfiguration为允许重新部署到发布存储库。 也许不是一个最佳实践,因为这是有原因的,你可以去Nexus软件库的“configuration”中的“访问设置” – 选项卡,并将“部署策略”设置为“允许重新部署”。
- 在父pom应用程序==>版本把标记如下:xxx-SNAPSHOT
例如:0.0.1-SNAPSHOT
- “-SNAPSHOT”:非常重要