2017-04-13 133 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'還有一些我想避免的含義 - 但是謝謝你的提示! –