maven deploy:deploy-file失败(409 Conflict),但工件上传成功

Dav*_* W. 37 deployment maven

注意:

我现在意识到jar被放入我的存储库,但是pom.xml没有.现在,我有另一个项目,其中pom.xml无法升级,但jar被放置在存储库中.

但是,另一个项目,pom.xml和jar都放在存储库中.


我在Jenkins有一个项目,我使用促销插件通过deploy:deploy-file目标在Maven中部署我的工件.

这适用于我在Maven中的其他几个项目,但是这个项目失败了.有趣的是,无论如何文件(但不是pom.xml)上传.我已经通过从Maven存储库中删除工件,然后运行促销来验证这一点.促销后,工件位于我们的存储库中.

这是我得到的日志.尽我所能打破额外的长队:

[workspace] $ /bin/bash -xe /opt/tomcat/apache-tomcat-7.0.27/temp/hudson7357923598740079329.sh
+ FILE_LOC=/mnt/jenkins/builds/metricsdb-trunk/21/archive/target/archive
+ mvn deploy:deploy-file
    -Dversion=0.8.0
    -Dfile=/mnt/jenkins/builds/metricsdb-trunk/21/archive/target/archive/metricsdb-etl.jar
    -DpomFile=/mnt/jenkins/builds/metricsdb-trunk/21/archive/target/archive/pom.xml
    -Durl=http://repo.vegicorp.com/artifactory/ext-release-local -DrepositoryId=VegiCorp
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Command Line Spring Batch Module 0.8.0.CI-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy-file (default-cli) @ metricsdb-etl ---
Uploading: http://repo.vegicorp.com/artifactory/ext-release-local/com/vegicorp/batch/metricsdb/metricsdb-etl/0.8.0/metricsdb-etl-0.8.0.jar
2/38 KB   
4/38 KB   
[...]

Uploaded: http://repo.vegicorp.com/artifactory/ext-release-local/com/vegicorp/batch/metricsdb/metricsdb-etl/0.8.0/metricsdb-etl-0.8.0.jar (38 KB at 202.2 KB/sec)
Uploading: http://repo.vegicorp.com/artifactory/ext-release-local/com/vegicorp/batch/metricsdb/metricsdb-etl/0.8.0/metricsdb-etl-0.8.0.pom
2/7 KB     
4/7 KB   
[...]

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.243s
[INFO] Finished at: Thu Oct 04 14:38:52 CDT 2012
[INFO] Final Memory: 4M/119M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file
    (default-cli) on project metricsdb-etl: Failed to deploy artifacts:
    Could not transfer artifact com.vegicorp.batch.metricsdb:metricsdb-etl:pom:0.8.0 from/to
    VegiCorp (http://repo.vegicorp.com/artifactory/ext-release-local):
    Failed to transfer file: http://repo.vegicorp.com/artifactory/ext-release-local/com/vegicorp/batch/metricsdb/metricsdb-etl/0.8.0/metricsdb-etl-0.8.0.pom.
    Return code is: 409, ReasonPhrase:Conflict. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
failed build hudson.tasks.Shell@24a6e7f9 SUCCESS
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

带有调试标志(-X)的输出位于Pastebin中.

Dav*_* W. 34

我发现了这个问题.实际上有两个问题

  • 我只设置了发布存储库,我试图在发布存储库中保存快照发布.Artifactory设置为仅允许发布存储库中的发行版.这可以在Artifactory设置中修改,但我决定不这样做.

  • pom.xml的版本与我试图保存的版本不同.例如,pom.xml说版本2.0,我试图将版本保存为2.0.2.由于这个原因,Artifactory拒绝了pom(但不是jar).

我发现Artifactory设置(每个存储库)询问是否"抑制POM一致性检查".选中此框将允许我将版本设置为1,但让pom说另一个.

我还必须修改我的Maven"settings.xml"文件以允许Release和Snapshot存储库.我还必须修改我的快照存储库的URL.

我们只使用了Ivy一段时间(没有快照概念),所以我们只是把东西放在发布库中.这是一个Maven项目,开发人员将POM中的版本标记为SNAPSHOT.

不幸的是,Maven文档很差,而且还没有关于Maven的好书.更糟糕的是,错误消息很差." 409,ReasonPhrase:Conflict. - > [Help 1] "是什么意思?

并不是说Ivy文档好多了,但是Ant in Action在使用Ivy方面有一些很好的部分.

  • 如果它将来帮助某人.我在组ID:尾随点中创建拼写错误后收到409错误.开车送我疯了.所以有多种可能的原因. (3认同)

B5A*_*5A7 22

如果要发布到快照存储库,请确保将-SNAPSHOT作为版本的一部分包括在内.

  • 谢谢你的建议。尽管很高兴删除我的答案,但我认为这些信息增加了有关此类错误的知识。我确实尝试添加评论,但是如您所知,我没有足够的代表。当寻求解决自己的问题时,我搜索了工件和409,这是唯一的stackoverflow答案。将有关409的信息保存在一个地方是否更好,还是应该问我自己的问题? (2认同)
  • 谢谢你,这是我的问题的解决方案 (2认同)

小智 6

是的....同一错误的多个原因。可能会对某人有所帮助

1. Login as Admin to Artifactory
2. Configuration -> Repositories
3. Edit the Local Repository ---> Suppress POM Consistency Checks
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题...不确定。方法正确与否?