2013-09-26 26 views
4

我對gradle完全陌生。我將下面的build.gradle放在一起,以查看如何從flatDir存儲庫中獲取依賴關係。 'localrepo'目錄包含兩個文件'a.txt'和'b.txt',沒有別的。當我運行'gradle依賴'時,我得到失敗:爲什麼這個gradle flatDir示例失敗?

:dependencies 

------------------------------------------------------------ 
Root project 
------------------------------------------------------------ 

copytest 
+--- :a.txt: FAILED 
\--- :b.txt: FAILED 

BUILD SUCCESSFUL 

Total time: 5.506 secs 

爲什麼?

這裏是我的build.gradle:

configurations { 
    copytest 
} 

repositories { 
    flatDir name: 'localRepository', dirs: 'localrepo' 
} 

dependencies { 
    copytest ':a.txt' 
    copytest ':b.txt' 
} 

task copyTask(type: Copy) { 
    from configurations.copytest 
    into 'result' 
} 

回答

8

一個flatDir回購使用一種簡單的規則把依賴的模塊名稱爲文件名進行搜索。如果您指定:a.txt,Gradle將搜索a.txt.jar,或者,如果您設置了project.version,則也會搜索a.txt-theVersion.jar。要將任意文件添加到配置中,而不是聲明flatDir回購,可以使用copytest files("some/path")

+0

謝謝。練習的要點是要學習如何使用非jar文件的存儲庫。我需要最終設置一個Artifactory,其中包含許多與Java完全無關的二進制文件(圖像,.pdf文件等)。我的理解是,存儲庫可以「容納任何東西」。所以,就這樣說,我如何訪問我簡單的拉出兩個.txt文件的例子? (另外,如果我把文件重命名爲'a.jar'和'b.jar',它仍然會失敗。) –

+0

如果你想準備使用Artifactory,你需要聲明'maven'或'常春藤庫「,而不是'flatDir'庫。你可以使用'file:'版本庫URL,但我可能會使用本地的Artifactory安裝。要回答你的第二個問題,你必須將文件重命名爲'a.txt.jar'。也許':a:1.0 @ txt'會匹配'a.txt'(或'a-1.0.txt'),但我不確定,因爲'flatDir'回購是特殊和有限的。 –

+0

:a:[email protected]做了詭計,彼得。謝謝。現在我已經完成了我設計的測試,我可以開始使用Artifactory演變事情。 –