tir38
tir38

Reputation: 10411

After deleting Gradle's build cache and building, some tasks are still marked as FROM-CACHE

I start off by deleting Gradle's build cache

$ rm -rf $GRADLE_HOME/caches/build-cache-*

I manually confirm this directory is gone. I also clean to ensure nothing from incremental build will interfere

$ ./gradlew clean

I then run a build w/ build-cache enabled:

$ ./gradlew --build-cache --scan app:assembleDebug
...
238 actionable tasks: 172 executed, 49 from cache, 17 up-to-date

Checking the generated report I see that some tasks are still marked as FROM-CACHE. How is this happening?

enter image description here

FWIW I'm using Gradle 5.6.3. I also don't use a remote build cache.


UPDATE: after clearing build cache, here's what's left in the cache dir:

$ 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

If I understand correctly, I don't need to delete any of these.

Upvotes: 2

Views: 17694

Answers (4)

Dinesh Khetarpal
Dinesh Khetarpal

Reputation: 372

Sometimes there is a need to invalidate cache every time you restart the IDEA. This may be due to shared indexes reuse. What I did Settings --> Tools --> Shared Indexes -> Download Automatically and it resolved all the pain.

Earlier the setting was Don't download use Local.

Upvotes: 0

tir38
tir38

Reputation: 10411

If I run a --scan and look at the FROM-CACHE tasks in the generated HTML report. I then look at the build cache keys for those FROM-CACHE tasks. I then go find those keys on my local machine. I see they are generated at the same time as the rest of the build. So I'm guessing that Gradle is using build cache within a build and not just across builds.

Upvotes: 0

Bjørn Vester
Bjørn Vester

Reputation: 7590

If you remove the local build cache and don't use a remove cache, Gradle should indeed not be able to fetch anything cached on the next build. However, I don't think you actually removed anything.

The GRADLE_HOME environment variable, if you have it, should points to an unpacked local Gradle distribution. It could be something like /Users/jasonatwood/gradle-6.0-all. It would be wrong to set it to a path that is not a Gradle distribution.

The Gradle build cache resides in /Users/jasonatwood/.gradle/caches/build-cache-1.

When you try to remove it with $ rm -rf $GRADLE_HOME/caches/build-cache-*, you are using GRADLE_HOME as if it is pointing to the root of your home folder (/Users/jasonatwood), which it most likely isn't.

So instead, use this for removing it: $ rm -rf ~/.gradle/caches/build-cache-*

Or, at the very least, verify that the cache folder has indeed been removed.

Upvotes: 1

Martin Zeitler
Martin Zeitler

Reputation: 76569

The local task cache in the .gradle directory within the root project might interfere.

In order to disable the local/global caching altogether, use gradle.properties:

org.gradle.caching=false 

Upvotes: 1

Related Questions