让Gradle使用本地maven存储库中的工件

时间:2016-02-04 23:18:36

标签: maven gradle

我想在我的本地计算机上使用带有缓存工件的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时才使用它?

1 个答案:

答案 0 :(得分:1)

我相信你可能会遗漏缓存中的.pom描述符文件,也许还有其他一些.xml描述符。尝试获取依赖项的.pom文件,看看是否有帮助。