2014-09-23 62 views
19

当我在一个父POM执行mvn release:perform,服务器与此错误响应有关子项目(文件名删节)之一:的Nexus接受上传,但表示它失败

[错误]未能执行目标 项目中的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,发现有问题的项目实际上有两次执行部署阶段。删除其中一个执行解决了我的问题。

+0

您试图部署的版本是否已经存在? – StackFlowed 2014-09-23 19:34:26

+0

@wrongAnswer:不会。当错误首次发生时,我认为可能是这个问题,所以我明确删除了工件的新目录(以及另一个没有错误地上载的子项目的目录),然后再次尝试。这导致了同样的问题:两个子项目都上传了,但第二个项目再次提供了“不良要求”,即使它已成功上传。 – 2014-09-23 19:43:29

+2

你能给出完整的错误... – StackFlowed 2014-09-23 19:44:14

回答

3

我遇到了同样的问题,发布了一个多模块项目。第一次发生错误,但部署目标已经联系,然后创建适当的路径。假设“释放”回购是一次写入回购,我第二次拒绝回购,拒绝覆盖路径。

因此,在这种情况下,您可能会要求您的管理员删除回购...或创建新版本。

PS:比从未更好的迟到;)