asciidoctor / asciidoctor-gradle-plugin

A Gradle plugin that uses Asciidoctor via JRuby to process AsciiDoc source files within the project.
https://asciidoctor.github.io/asciidoctor-gradle-plugin/
Apache License 2.0
285 stars 120 forks source link

Resolve Gradle configuration cache issues #730

Open tylerbertrand opened 1 month ago

tylerbertrand commented 1 month ago

Overview

Fixes the Gradle configuration caching issues originating from this project when executing org.asciidoctor.gradle.jvm.AsciidoctorTask. There are some remaining issues, but those are caused by the grolifant library.

Changes

The configuration caching issues in this project were primarily tasks referencing types incompatible with configuration caching. The references to these types were mostly held by AsciidoctorJExtension, which AbstractAsciidoctorTask held a reference to. To resolve this, AbstractAsciidoctorTask now reads the needed AsciidoctorJExtension properties through providers, so that holding a direct reference to AsciidoctorJExtension is no longer necessary. No input annotations were added to these providers to maintain parity with the current task behavior. The setters in AbstractAsciidoctorTask that write data through to AsciidoctorJExtension now obtain the AsciidoctorJExtension through an @Internal getter. This way, Gradle does not serialize AsciidoctorJExtension as part of the config cache entry.

Next Steps

The remaining configuration caching issues are shown in the following report.

image

The grolifant library will have to be updated or removed from this plugin to resolve these issues.