2012-06-12 175 views
3

我想從Bamboo部署快照構建到Artifactory。我的存儲庫的Handle Snapshots選項被選中,它的Maven Snapshot Version Behavior設置爲Unique。存儲庫的佈局是gradle-default無法將Bamboo快照部署到Artifactory

我的目標是構建計劃部署在一個位置類似於以下的神器:

project-1.0-SNAPSHOT.txt=>com.company/project/1.0-SNAPSHOT 

repo-local:com.company/project/1.0-SNAPSHOT/project-1.0-20120612.101600.txt 

竹我有一個Artifactory Generic Deploy Task,與配置爲Edit Published Artifacts場以下

但Artifactory拒絕我的構建文物,說The repository 'repo-local' rejected the artifact 'repo-local:com.company/project/1.0-SNAPSHOT/project-1.0-SNAPSHOT.txt' due to its snapshot/release handling policy.

如何獲得Artifactory t o接受工件並自動用文件名中的時間戳代替SNAPSHOT

回答

3

您的問題很可能是您部署的路徑不被您選擇的佈局(gradle-default)視爲有效的集成版本。 的gradle這個默認佈局期望集成版本,如:

org/module/1.0-12345678912345/module-1.0-12345678912345.jar 

即,爲基本修訂後要附加一個14位長的時間戳; 儘管您的路徑包含SNAPSHOT而不是14位數的長時間戳。

如果你想有這樣的模式:

com.company/project/1.0-SNAPSHOT/project-1.0-20120612.101600.txt 

你將不得不自定義佈局,接受-SNAPSHOT作爲文件夾整合修訂和修改你的神器包含時間戳的文件整合修訂。

我猜你的假設是Artifactory會將非唯一集成修訂版本轉換爲唯一版本;只有當存儲庫設置爲默認的Maven佈局以及工件符合Maven的佈局時,Artifactory纔會執行此轉換。

這是因爲雖然Maven實際上已經定義了集成修訂標準,但Gradle並沒有這樣的標準;所以基本上,Gradle修訂幾乎可以做任何事情。除此之外,唯一和非唯一集成修訂的概念在Gradle世界中並不存在,它實際上並沒有任何內置功能來支持這些功能;所以當你在Gradle中看到一條Mavenized路徑時,它基本上就是模仿這個模式。