让Gradle使用本地maven存储库中的工件
我想使用maven存储库和本地计算机上的缓存工件,通过避免下载它们来加速Gradle构建 不幸的是,我注意到的是,即使本地存储库列在第一位,并且它具有我需要的依赖关系,Gradle也会在Internet连接可用的情况下从Internet获取工件,并且只会在访问网络存储库时出现问题时才使用本地存储库 下面是一个具体的小例子,再现了这个问题: 构建.渐变:让Gradle使用本地maven存储库中的工件,maven,gradle,Maven,Gradle,我想使用maven存储库和本地计算机上的缓存工件,通过避免下载它们来加速Gradle构建 不幸的是,我注意到的是,即使本地存储库列在第一位,并且它具有我需要的依赖关系,Gradle也会在Internet连接可用的情况下从Internet获取工件,并且只会在访问网络存储库时出现问题时才使用本地存储库 下面是一个具体的小例子,再现了这个问题: 构建.渐变: apply plugin: 'java' repositories { maven { name 'cache' url
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:
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
/home/vagrant/m2copy的内容如下:
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:
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
以及渐变构建的输出:
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的情况下使用它吗?我相信你可能丢失了缓存中的.pom描述符文件以及其他一些.xml描述符。尝试获取依赖项的.pom文件,看看是否有帮助。尝试将-i添加到构建命令中以获取更多信息。Gradle将告诉您它正试图访问哪些存储库。正是这样。我用来生成本地存储库的机制是省略.pom文件,这将使Gradle将此存储库仅用作备份。