本地gradle缓存存储maven / gradle依赖项的副本。 How to clear gradle cache?介绍了如何清除整个缓存,而不是单个包。
是否有一种从本地gradle缓存中删除一个包的简单方法?例如,在积极开发库时,这将非常有用。为了测试一个次要的库更改,我目前必须从文件系统中清除整个缓存,因此不使用该库的旧缓存版本。
我了解也可以使用gradle ResolutionStrategy中描述的How can I force gradle to redownload dependencies?。我宁愿不更改gradle配置,因为大多数时候,对于大多数开发人员来说,默认的缓存行为都没问题。
答案 0 :(得分:2)
所以这是一个我掀起的快速剧本:
defaultTasks 'seekAndDestroy'
repositories{ //this section *needs* to be identical to the repositories section of your build.gradle
jcenter()
}
configurations{
findanddelete
}
dependencies{
//add any dependencies that you need refreshed
findanddelete 'org.apache.commons:commons-math3:3.2'
}
task seekAndDestroy()<<{
configurations.findanddelete.each{
println 'Deleting: '+ it
delete it.parent
}
}
您可以通过运行gradle -b seekanddestroy.gradle
演示如何运作: 如果你的build.gradle看起来像这样:
apply plugin:'java'
repositories{
jcenter()
}
dependencies{
compile 'org.apache.commons:commons-math3:3.2'
}
首次构建,包括下载依赖项:
λ gradle clean build | grep Download
Download https://jcenter.bintray.com/org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar
第二次清理构建,使用缓存依赖,因此无需下载:
λ gradle clean build | grep Download
现在运行seekanddestroy:
λ gradle -b seekanddestroy.gradle -q
Deleting: .gradle\caches\modules-2\files-2.1\org.apache.commons\commons-math3\3.2\ec2544ab27e110d2d431bdad7d538ed509b21e62\commons-math3-3.2.jar
下一次构建,再次下载依赖项:
λ gradle clean build | grep Download
Download https://jcenter.bintray.com/org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar
答案 1 :(得分:1)
效果很好,但对于较新版本的gradle,请改用以下方法:
task seekAndDestroy{
doLast {
configurations.findanddelete.each{
println 'Deleting: '+ it
delete it.parent
}
}
}