2012-06-16 34 views
0

我已經創建了一個任務,可以提取本地.tar文件(我之前從Artifactory手動下載)作爲測試。我如何從Gradle腳本中引用Artifactory上的文件?我應該只使用服務器路徑嗎?我所做的所有關於gradle的東西都是基本的東西,並沒有與存儲庫一起工作。使用gradle訪問存儲庫中的最新文件

我還想根據自上次運行腳本後文件是否發生了變化來執行某個操作,這可能嗎?

回答

1

這樣做的一種方法是爲您的TAR文件創建一個新的configuration。在我的例子中,我給它起了名字myTar。在存儲庫閉包中,您定義Artifactory存儲庫的URL,並在dependencies閉包中引用TAR文件作爲依賴關係。運行Gradle時,它會爲您下載文件並將其放入本地存儲庫。正如我讀到的,你已經創建了一個提取TAR文件的任務。我創建了一個名爲extractMyTar的任務,它通過其配置名稱引用下載的TAR文件,並將其解壓縮到本地目錄中。

configurations { 
    myTar 
} 

repositories { 
    mavenRepo urls: 'http://my.artifactory/repo' 
} 

dependencies { 
    myTar 'your.org:artifact-name:[email protected]' 
} 

task extractMyTar << { 
    File myTarFile = configurations.getByName('myTar').singleFile 

    if(myTarFile.exists()) { 
     ant.untar(src: myTarFile, dest: file('myDestDir')) 
    } 
} 
+0

我目前無法嘗試,但我感謝您的幫助。我確實有一個問題,在依賴部分,myTar中的路徑必須是文件的完整路徑?或者我聲明爲上面的存儲庫URL之後的路徑?是我必須指定的版本嗎? –

+0

我建議你閱讀[依賴管理]一章(http://gradle.org/docs/current/userguide/dependency_management.html)。這將解釋這一切。這不是文件的完整路徑。它是你的工件上傳到Artifactory的組ID,名稱和版本。版本1.0僅僅是一個例子。 –

+0

我得到它的工作得益於你的幫助。爲了補充,你知道如果它的依賴關係被更新了嗎?類似於if(myTar.wasUpdated){運行一些代碼} –

相關問題