我首先删除Gradle的构建缓存
$ rm -rf $GRADLE_HOME/caches/build-cache-*
我手动确认此目录已消失。我还进行清理以确保增量构建中的任何内容都不会干扰
$ ./gradlew clean
然后我运行一个启用了构建缓存的构建:
$ ./gradlew --build-cache --scan app:assembleDebug
...
238 actionable tasks: 172 executed, 49 from cache, 17 up-to-date
检查生成的报告,我发现某些任务仍被标记为FROM-CACHE。这是怎么回事?
FWIW我正在使用Gradle 5.6.3。我也不使用远程构建缓存。
更新:清除构建缓存后,这是缓存目录中剩下的内容:
$ pwd
/Users/jasonatwood/.gradle/caches
$ ls -al
total 24
drwx------ 11 jasonatwood staff 352 Dec 13 18:11 .
drwxr-xr-x 9 jasonatwood staff 288 Oct 15 17:24 ..
drwxr-xr-x 14 jasonatwood staff 448 Oct 29 16:07 5.4.1
drwxr-xr-x 15 jasonatwood staff 480 Nov 26 18:25 5.6.3
drwxr-xr-x 35 jasonatwood staff 1120 Dec 11 14:14 jars-3
drwxr-xr-x 5 jasonatwood staff 160 Oct 15 17:44 journal-1
drwxr-xr-x 7 jasonatwood staff 224 Oct 15 17:50 modules-2
drwxr-xr-x 5 jasonatwood staff 160 Oct 15 17:50 transforms-2
-rw-r--r-- 1 jasonatwood staff 39 Oct 15 17:27 transforms-2.lock
-rw------- 1 jasonatwood staff 28 Oct 22 16:34 user-id.txt
-rw-r--r-- 1 jasonatwood staff 17 Dec 13 18:00 user-id.txt.lock
如果我理解正确,则不需要删除其中任何一个。
答案 0 :(得分:1)
根项目中.gradle
目录中的本地任务缓存可能会干扰。
要完全禁用本地/全局缓存,请使用gradle.properties
:
org.gradle.caching=false
答案 1 :(得分:1)
如果您删除本地构建缓存并且不使用删除缓存,那么Gradle实际上应该无法获取在下一个构建中缓存的任何内容。但是,我认为您实际上并未删除任何内容。
GRADLE_HOME
环境变量(如果有的话)应指向未打包的本地Gradle发行版。可能类似于/Users/jasonatwood/gradle-6.0-all
。将其设置为非Gradle发行版的路径是错误的。
Gradle构建缓存位于/Users/jasonatwood/.gradle/caches/build-cache-1
中。
当您尝试使用$ rm -rf $GRADLE_HOME/caches/build-cache-*
删除它时,您正在使用GRADLE_HOME
,就好像它指向您的主文件夹(/Users/jasonatwood
)的根目录一样,这很可能是“ t。
因此,请使用此命令将其删除:$ rm -rf ~/.gradle/caches/build-cache-*
或者至少验证缓存文件夹确实已被删除。
答案 2 :(得分:0)
如果我运行--scan
并查看生成的HTML报告中的FROM-CACHE任务。
然后,我查看那些FROM-CACHE任务的构建缓存键。然后,我去本地计算机上查找那些密钥。我看到它们与构建的其余部分同时生成。因此,我猜测Gradle在构建内部使用构建缓存 ,而不仅仅是跨构建。
答案 3 :(得分:0)
有时每次重新启动 IDEA 时都需要使缓存无效。这可能是由于共享索引重用。我做了什么设置 --> 工具 --> 共享索引 -> 自动下载,它解决了所有的痛苦。
之前的设置是不要下载使用本地。