首页 文章

在Nexus中部署工件时出错

提问于
浏览
73

我在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 回答

  • 2

    我能想到几件事:

    • 用户凭据错误

    • url到服务器是错误的

    • 用户无权访问部署存储库

    • 用户无权访问特定的存储库目标
      如果它是一个版本(不是-SNAPSHOT版本),已经使用该版本部署了

    • 工件

    • 存储库不适合部署相应的工件(例如,快照版本,代理存储库或组的发布存储库而不是托管存储库)

    检查这些,如果仍然遇到麻烦,请在此处提供更多详细信息 .

  • 117

    只是为了创建一个单独的答案 . 答案实际上是在对已接受答案的评论中找到的 .

    尝试将artefact的版本更改为以 -SNAPSHOT 结尾 .

  • 1

    对我来说问题的原因是-source.jars被上传了两次(使用maven-source-plugin),这是被接受的答案中的原因之一 . 重定向回答我提到的问题:Maven release plugin fails : source artifacts getting deployed twice

  • 8

    我今天遇到了这个问题,问题是我试图发布的版本:执行已经在Nexus回购中 .

    在我的情况下,这可能是由于在早期调用release:perform期间网络断开连接 . 即使我丢失了连接,但似乎发布成功了 .

  • 6

    在极少数情况下,您需要将SAME STABLE工件重新部署到Nexus,默认情况下它将失败 . 如果您随后从Nexus中删除工件(通过Web界面)以再次部署它,则部署仍然会失败,因为只需删除例如jar或pom不会清除目录中仍然存在的其他文件 . 您需要登录该框并完整删除该目录 .

  • 3

    父pom应用程序中的

    • =>> Version将标记放置如下:x.x.x-SNAPSHOT

    示例:0.0.1-SNAPSHOT

    • "-SNAPSHOT":非常重要
  • 1

    确保在nexus中已经不存在(工件和版本)(作为发布) . 在那种情况下返回Bad Request .

  • 7

    我今天遇到了同样的问题,加上"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中进入“访问设置”并将“部署策略”设置为“允许重新部署” .

  • 26

    如果上述任何答案得以解决,您可以直接从(下方附带的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 . (截图如下)

    enter image description here

  • 2

    如果您尝试以下情况,将退回400 Bad Request:

    • 将以-SNAPSHOT结尾的 snapshot 工件(或版本)部署到 release 存储库

    • release 工件(版本 not ,以-SNAPSHOT结尾)部署到 snapshot 存储库

相关问题