2016-02-04 81 views
1

我想使用一個Maven倉庫,並在本地計算機上使用緩存工件來避免下載它們來加速Gradle構建。讓Gradle使用本地Maven倉庫中的工件

不幸的是,我注意到,即使本地存儲庫首先被列出,並且它具有我所需要的依賴關係,如果Internet連接可用,Gradle將從Internet獲取工件,並且只會使用本地存儲庫是到網絡的問題之一。

這裏是再現這個問題的一個具體的小例子:

的build.gradle

m2copy: 
com 

m2copy/com: 
google 

m2copy/com/google: 
code 

m2copy/com/google/code: 
gson 

m2copy/com/google/code/gson: 
gson 

m2copy/com/google/code/gson/gson: 
2.4 

m2copy/com/google/code/gson/gson/2.4: 
gson-2.4.jar 
gson-2.4.jar.sha1 
_remote.repositories 

apply plugin: 'java' 

repositories { 
    maven { 
    name 'cache' 
    url "/home/vagrant/m2copy" 
    } 
    jcenter() 
} 

dependencies { 
    compile 'com.google.code.gson:gson:2.4' 
} 

jar { 
    manifest { 
    attributes 'Created-By': 'Ekumen' 
    } 
} 

/家/流浪者/ m2copy內容

並且gradle build的輸出:

[email protected]:~/test_cache$ ./gradlew build 
:compileJava 
Download https://jcenter.bintray.com/com/google/code/gson/gson/2.4/gson-2.4.pom 
Download https://jcenter.bintray.com/org/sonatype/oss/oss-parent/9/oss-parent-9.pom 
Download https://jcenter.bintray.com/com/google/code/gson/gson/2.4/gson-2.4.jar 
:processResources UP-TO-DATE 
:classes 
:jar 
:assemble 
:compileTestJava UP-TO-DATE 
:processTestResources UP-TO-DATE 
:testClasses UP-TO-DATE 
:test UP-TO-DATE 
:check UP-TO-DATE 
:build 

BUILD SUCCESSFUL 

任何想法爲什麼Gradle在這種情況下跳過本地存儲庫,只有在沒有訪問jcenter時才使用它?

+0

嘗試將-i添加到您的構建命令以獲取更多信息。 Gradle會告訴你它試圖訪問哪些存儲庫。 – tomasulo

回答

1

我相信你可能會遺漏你的緩存中的.pom描述符文件,也可能是其他一些.xml描述符。嘗試獲取您的依賴關係的.pom文件,看看是否有幫助。

+0

就是這樣。我用來生成本地存儲庫的機制忽略了.pom文件,這會讓Gradle僅將此存儲庫用作備份。 –

相關問題