Kotlin / Kotlin/dataframe

Enable Gradle Configuration Cache

Open
#1,622 0 comments 0 reactions 0 assignees View on GitHub
enhancement infrastructure
Dominant language
Kotlin
Stars
1.1k
Forks
83
Avg merge
4d 12h
Merged PRs (30d)
30

Description

>The Configuration Cache improves build performance by caching the result of the [configuration phase](https://docs.gradle.org/current/userguide/build_lifecycle_intermediate.html#build_lifecycle) and reusing it for subsequent builds.

https://docs.gradle.org/current/userguide/configuration_cache.html

Who knows how far we'll get to enabling configuration cache. Our project is quite complex after all... However, to improve build time, this would be a fantastic goal!

It probably needs to be broken down into smaller steps. For one, I know KoDEx doesn't [yet](https://github.com/Jolanrensen/KoDEx/issues/94) support configuration cache. We will also need to revisit other interconnected dependencies of tasks and builds.

Current collection of warnings enabling configuration cache:

```
13 problems were found storing the configuration cache, 10 of which seem unique.
- Task `:core:changeJarTask` of type `org.gradle.api.DefaultTask`: cannot serialize Gradle script object references as these are not supported with the configuration cache.
- Task `:core:processKDocsMain` of type `nl.jolanrensen.kodex.gradle.RunKodexTask`: cannot serialize object of type 'org.gradle.api.internal.project.DefaultProject', a subtype of 'org.gradle.api.Project', as these are not supported with the configuration cache.
- Task `:dataframe-csv:changeJarTask` of type `org.gradle.api.DefaultTask`: cannot serialize Gradle script object references as these are not supported with the configuration cache.
- Task `:dataframe-csv:processKDocsMain` of type `nl.jolanrensen.kodex.gradle.RunKodexTask`: cannot serialize object of type 'org.gradle.api.internal.project.DefaultProject', a subtype of 'org.gradle.api.Project', as these are not supported with the configuration cache.
- Task `:plugins:dataframe-gradle-plugin:processIntegrationTestResources` of type `org.gradle.language.jvm.tasks.ProcessResources`: cannot serialize object of type 'org.gradle.api.internal.project.DefaultProject', a subtype of 'org.gradle.api.Project', as these are not supported with the configuration cache.
- Task `:plugins:dataframe-gradle-plugin:processResources` of type `org.gradle.language.jvm.tasks.ProcessResources`: cannot serialize object of type 'org.gradle.api.internal.project.DefaultProject', a subtype of 'org.gradle.api.Project', as these are not supported with the configuration cache.
- Task `:plugins:dataframe-gradle-plugin:processTestResources` of type `org.gradle.language.jvm.tasks.ProcessResources`: cannot serialize object of type 'org.gradle.api.internal.project.DefaultProject', a subtype of 'org.gradle.api.Project', as these are not supported with the configuration cache.
- Task `:plugins:expressions-converter:test` of type `org.gradle.api.tasks.testing.Test`: cannot serialize Gradle script object references as these are not supported with the configuration cache.
- Task `:plugins:kotlin-dataframe:test` of type `org.gradle.api.tasks.testing.Test`: cannot serialize Gradle script object references as these are not supported with the configuration cache.
- Task `:core:changeJarTask` of type `org.gradle.api.DefaultTask`: invocation of 'Task.project' at execution time is unsupported with the configuration cache.
```

Contributor guide

Open the contributing guide

Research direction

Start with Gradle's configuration-cache documentation and the listed task warnings, especially :core:changeJarTask and :core:processKDocsMain; KoDEx's limitation is tracked in issue 94. Done means configuration cache can be enabled for the project without the reported configuration-cache problems.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.