others - 部署 Maven deploy:deploy 文件失败( 409冲突),但artifact上传成功

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

这对于Maven中的其他几个项目是有效的,但是在这个项目失败了,我已经通过从Maven存储库删除artifact,然后,运行升级来验证了这个,升级之后artifact在仓库里。

这是日志。


[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



时间:

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

  • 我只有发布存储库设置,我试图在发布存储库中保存快照发布。 Artifactory被设置为只允许释放版本库中的版本。 这可以在Artifactory设置中修改,但是我决定不这样做。

  • 我的pom.xml 有一个不同的版本,我试图将它的保存到。 例如 pom.xml 表示版本 2.0,我试图将发布保存为 2.0.2. Artifactory拒绝了 pom ( 但不是 jar ),原因如下。

我找到了Artifactory设置( 这是每个仓库的),它询问是否"。抑制POM一致性检查"。 选中这个框将允许我将版本设置为1,但让pom表示另一个。

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

我们只是使用Ivy一段时间,所以我们只是在发布库中放东西。 这是一个 Maven 项目,开发人员将POM中的版本标记为快照。

不幸的是,Maven 文档很差,而且还没有关于 Maven的任何书籍。 更糟糕的是,错误消息只是糟糕的。 什么是 409,ReasonPhrase:Conflict 。 > [Help 1 ]"?

不是这样的文档更好,但是 Ant 中的有一些使用on的优秀部分。

如果要发布到快照存储库,确保将-SNAPSHOT作为版本的一部分包含。


1. Login as Admin to Artifactory


2. Configuration -> Repositories


3. Edit the Local Repository ---> Suppress POM Consistency Checks



我也有这个问题,我发现原因是父项目没有部署在快照存储库中,我在父文件夹中运行mvn deploy,问题已解决。

和jar文件(外部,在同一目录)关联的POM文件对自身有依赖关系,

我修改了POM文件,删除了自依赖,并确保包信息是正确的,然后部署的artifact没有问题。

...