我想在我的本地计算机上使用带有缓存工件的maven存储库,以避免下载它们来加速Gradle构建。
不幸的是,我注意到即使首先列出本地存储库并且它具有我需要的依赖关系,如果Internet连接可用,Gradle将从Internet获取工件,并且只有当存在时才使用本地存储库进入网络的问题。
以下是一个重现此问题的具体小例子:
的build.gradle :
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'
}
}
/ home / vagrant / m2copy 的内容:
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
gradle build的输出:
vagrant@vagrant-ubuntu-trusty-64:~/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 :(得分:1)
我相信你可能会遗漏缓存中的.pom描述符文件,也许还有其他一些.xml描述符。尝试获取依赖项的.pom文件,看看是否有帮助。