首页 文章

有没有一种简单的方法可以从本地gradle缓存中删除一个依赖项?

提问于
浏览
2

本地gradle缓存存储maven / gradle依赖项的副本 . How to clear gradle cache?介绍了如何清除整个缓存,而不是单个包 .

有没有一种简单的方法从本地gradle缓存中删除一个包?例如,在积极开发库时,这将非常有用 . 为了测试一个次要的库更改,我目前必须从文件系统中清除整个缓存,因此不使用该库的旧缓存版本 .

我知道也可以使用How can I force gradle to redownload dependencies?中描述的gradle ResolutionStrategy . 我宁愿不更改gradle配置,因为大多数时候,对于大多数开发人员来说,默认的缓存行为都没问题 .

1 回答

  • 1

    所以这是一个我掀起的快速脚本:

    seekanddestroy.gradle

    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
    

相关问题