删除gradle 的缓存_Gradle 缓存目录结构 缓存策略

本文介绍了Gradle的缓存策略,包括SNAPSHOT版本和动态版本的缓存时间,默认为24小时。动态版本如'3.+', 'latest.integration'会不断查找最新版本。Gradle缓存可以通过`--refresh-dependencies`或配置`resolutionStrategy`来刷新。缓存目录包括caches、daemon、native、wrapper等,其中caches/modules-2下存储了下载的jar和元数据。当IDEA代码提示不更新时,可以删除.idea/libraries/*.xml并同步文件系统。" 125445730,7614044,基于SpringBoot的校园疫情防控系统设计,"['Java开发', 'SpringBoot框架', '数据库设计', 'Web应用', '毕业设计']
摘要由CSDN通过智能技术生成

[TOC]

gradle 缓存策略

Gradle 的缓存策略中,对于 SNAPSHOT 版本默认的缓存周期是 24 小时,也就是从我上次更新之后,24小时内都会使用上次的缓存

Gradle 对于动态版本和变化模块的缓存时间默认是 24 小时。

动态版本 是什么

你见过的像 3.+ 这种就是动态版本,它会取检查到的最高的版本号。又比如 latest.integration,它也是动态版本

而变化模块

就是像 0.2-SNAPSHOT 这种后面带 SNAPSHOT 的快照版本,不是动态版本,不会更新

这两者的区别就是

xxx+ 尽管你代码中的版本号写法不变但实际上它仍然是去取仓库的最新版本

而latest.integration它在仓库中的版本号还是一样,仍然是 xxx-SNAPSHOT,但实际上这个版本所对应的内容已经变了

配置动态版本,会导致额外的构建查询时间,具体可以输出构建性能报告,自行比较

Gradle 缓存周期修改

执行型

./gradlew aD --refresh-dependencies

配置型

configurations.all {

// 动态版本

resolutionStrategy.cacheDynamicVersionsFor 10, 'minutes'

// 变化模块

resolutionStrategy.cacheChangingModulesFor 10, 'minutes'

}

gradle 缓存目录

.gradle目录

目录

描述

caches

gradle缓存目录

daemon

daemon日志目录

native

gradle平台相关目录

wrapper

gradle-wrapper下载目录

caches目录

目录

描述

2.14.1

gradle程序的脚本(gradle程序版本)

3.2.1

gradle程序的脚本(gradle程序版本)

jars-1

未知

jars-2

未知

modules-2

下载缓存目录

caches/modules-2 目录

目录

描述

files-2.1

gradle下载的jar目录

metadata-2.16

gradle-2.14.1的描述文件 (不确定)

metadata-2.23

gradle-3.2.1的描述文件 (不确定)

files-2.1的目录组织

${org}/${package}/${version}/${shanum1}/${package-version}.pom

${org}/${package}/${version}/${shanum2}/${package-version}.jar

例如

https://jcenter.bintray.com/com/android/tools/lint/lint-api/25.1.3/lint-api-25.1.3.jar

对应的目录为

.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/25.1.3/${shasum1}/lint-api-25.1.3.jar

daemon目录

不必要依赖离线

用于存放gradle daemon的运行日志 按gradle程序版本存放

目录

描述

2.14.1

gradle-2.14.1运行的日志

3.2.1

gradle-3.2.1运行的日志

native目录

不必要依赖离线

用于存放平台相关(Win/Linux/Mac)的库

目录

描述

19

gradle-2.14.1对应的lib目录,按平台存放,如osx-amd64

21

gradle-3.2.1对应的lib目录,按平台存放,如osx-amd64

jansi

未知

wrapper 目录

用于存放 gradle-wrapper 下载 `gradle的zip包和解压后的文件夹

wrapper的目录规则

wrapper/dists/gradle-2.14.1-all/base36/gradle-2.14.1-all.zip

wrapper/dists/gradle-2.14.1-all/base36/gradle-2.14.1-all.zip.lck

wrapper/dists/gradle-2.14.1-all/base36/gradle-2.14.1-all.zip.ok

其中base36的规则

从gradle/wrapper/gradle-wrapper.properties中得到distributionUrl

对distributionUrl计算md5

利用0x8c9a3200746e2de49722587c1108fe87构造一个uint 128位整数

将整数利用base36得到base36的值(取小写)

import java.math.BigInteger;

import java.security.MessageDigest;

public class Hash {

public static void main(String[] args) {

try {

MessageDigest messageDigest = MessageDigest.getInstance("MD5");

byte[] bytes = args[0].getBytes();

messageDigest.update(bytes);

String str = new BigInteger(1, messageDigest.digest()).toString(36);

System.out.println(str);

} catch (Exception e) {

throw new RuntimeException("Could not hash input string.", e);

}

}

}

Error fix

IDEA 代码提示不更新

rm -rf ./.idea/libraries/*.xml

# then run IDEA `Sync with File System`

注意这个方法可能失效,你需要自行理解缓存加载,和IDE缓存加载的区别

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值