2017-04-13 135 views
0

我试图将pom.xml文件上载到Artifactory服务器上托管的Maven存储库。该pom.xml<project>部分看起来是这样的:目标部署路径'...'与POM的预期路径前缀不匹配

<groupId>com.x.y.z</groupId> 
<artifactId>common</artifactId> 
<version>2.3.0-RELEASE</version> 
<packaging>jar</packaging> 

我使用了詹金斯的Artifactory的插件在管道脚本,这里是uploadSpec

{ 
    "files": [ 
     { 
      "pattern": "target/common-2.3.0-RELEASE.jar", 
      "target": "REPOSITORY/com/x/y/z/common/2.3.0-RELEASE/common-2.3.0-RELEASE.jar" 
     }, 
     { 
      "pattern": "pom.xml", 
      "target": "REPOSITORY/com/x/y/z/common/2.3.0-RELEASE/common-2.3.0-RELEASE.pom" 
     } 
    ] 
} 

当我现在尝试上载的神器,我收到以下错误信息:

java.io.IOException: Failed to deploy file. 
    Status code: 409 
    Response message: Artifactory returned the following errors: 
    The target deployment path 'com/x/y/z/common/2.3.0-RELEASE/common-2.3.0-RELEASE.pom' 
    does not match the POM's expected path prefix 'com/x/y/z/common/2.2.7'. 
    Please verify your POM content for correctness and make sure the source path is a valid Maven repository root path. Status code: 409 

我上传RELEASE之前,我上传SNAPSHOT哪些(在这种情况下)的版本是2.2.7-SNAPSHOT。之后,我将版本升级到2.3.0,使用mvn clean install重新构建项目,然后开始另一个上传到Artifactory。不知何故,当我尝试上传新版本时,Artifactory似乎仍期待“旧版”。

编辑

当我上传的文件与curl,一切正常:

curl -user:password-T pom.xml \ 
"http://DOMAIN/artifactory/REPOSITORY/com/x/y/z/common/2.3.0-RELEASE/common-2.3.0-RELEASE.pom" 

所以看起来这是关系到詹金斯Artifactory的插件。

+0

提醒自己在管道脚本行家部署:这里的问题跟踪https://www.jfrog.com/jira/projects/HAP/issues/HAP-910?filter = allissues –

回答

3

将您的pom文件上传到错误的位置。当路径应为REPOSITORY/com/x/y/z/common/2.3.0-RELEASE/common-2.3.0-RELEASE.pom时,您使用REPOSITORY/com/x/y/z/common-2.3.0-RELEASE.pom作为路径。注意缺少版本命名的目录。

好消息是,你甚至不需要打扰它。当您将我们的Artifactory.newMavenBuild用于Maven构建版本时,我们将负责正确的部署。见the example

+0

嗨@JBaruch - 非常感谢您的快速回复......“target”中的路径是帖子中的一个错字 - 我有您建议的路径并将其拧紧在我的文章中...所以这不是问题...我会尝试下周推荐的'newMavenBuild' :)复活节快乐! –

1

你可以在管道脚本中尝试下面的代码吗?

{ 
    "pattern": "pom.xml", 
    "target": "REPOSITORY/com/x/y/z/common/2.3.0-RELEASE/common-2.3.0-RELEASE.pom" 
} 

,或者如果它不工作,你可以利用使用

def mvnHome = tool mvnName 
sh "$mvnHome/bin/mvn deploy -deploy-file -Durl=file:///C:/m2-repo \                    
              -DrepositoryId=some.id \              
            -Dfile=path-to-your-artifact-jar \                     
            -DpomFile=path-to-your-pom.xml 
+0

对不起 - 在我的文章中有一个错字...那条路是按照你的建议,但我把它拧在我的文章...我现在使用卷曲,它现在的作品。 'mvn deploy'还有一些我想避免的含义 - 但是谢谢你的提示! –