【发布时间】:2014-11-18 03:24:50
【问题描述】:
当我在父 POM 上执行 mvn release:perform 时,服务器正在响应有关其中一个子项目的错误(文件名已编辑):
[ERROR] 未能执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file 项目上的(default-cli):无法部署工件:无法 从/向存储库传输工件:传输文件失败。 返回码为:400,ReasonPhrase:错误请求。
但是,此子项目的所有文件已成功上传!我看到了一个新目录(以发布版本号命名),其中包含人们期望的所有 .jar、.pom、.md5 和 .sha1 文件。
我无权访问 Nexus 服务器,但我想知道可能是什么原因导致此问题以及如何解决此问题。 Maven 是否有可能尝试两次上传这个特定的子项目?如果是这样,为什么 Maven 会这样做,我该如何阻止它?
更新:如果您遇到同样的问题,请查看this post 中点赞最多的答案。我跑了mvn help:effective-pom,发现有问题的项目实际上有两次部署阶段的执行。删除其中一个处决解决了我的问题。
【问题讨论】:
-
您尝试部署的版本是否已经存在?
-
@wrongAnswer: 不。当错误第一次发生时,我认为可能是问题所在,所以我明确删除了工件的新目录(以及另一个没有错误上传的子项目的目录)和又试了一次。这导致了同样的问题:两个子项目都上传了,但第二个子项目再次给出了“Bad Reqeust”,即使它上传成功。
-
你能给出完整的错误...
-
这是我在进行类似设置时遇到的错误:gist.github.com/arun-gupta/4cb82e44a29561c3d6a4
-
即使您部署到 localhost:8081,您也无权访问 Nexus?我会尝试在工件上执行 wget 并查看它是否真的存在以及它是否有效并使用您期望的时间戳构建(在清单文件中)。