Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Help community Gradle plugins adopt the configuration cache #13490

Open
eskatos opened this issue Jun 17, 2020 · 40 comments
Open

Help community Gradle plugins adopt the configuration cache #13490

eskatos opened this issue Jun 17, 2020 · 40 comments
Assignees

Comments

@eskatos
Copy link
Member

eskatos commented Jun 17, 2020

With the introduction of the Gradle configuration cache, community plugins may need to be adjusted. The goal of this issue is to track the status of community plugins.

For configuration cache support in core Gradle plugins see #13454

For more information about the configuration cache, how to use it and troubleshoot problems, please read the dedicated user manual chapter.

Community plugins

The following table displays the state of the support for the configuration cache in various community Gradle plugins. We started this list with the topmost downloaded plugins and added others we stumbled upon in the builds we tested. The list is not exhaustive, keep reading if you don't find your favorite plugin in the list.

We will be updating that list continuously.

If you find a plugin that you use in this list, please upvote the linked issues to make the plugin authors aware of your interest.

Plugin Open issue(s) Support Version/Branch
Android Gradle Plugin N/A 7.1.0-alpha12 
Kotlin JVM N/A 1.5.0
Kotlin KAPT N/A 1.5.0
Kotlin Android N/A 1.5.0
Kotlin MPP (common) N/A 1.5.20
Kotlin JS N/A 1.5.20
Kotlin Native KT-43293 🙈 1.7.0
org.gradle.test-retry N/A 1.1.2
org.gradle.android.cache-fix N/A 2.1.1
org.gradle.playframework gradle/playframework#138 N/A
org.springframework.boot N/A v2.4.0
io.spring.dependency-management spring-gradle-plugins/dependency-management-plugin#312 N/A
org.sonarqube TODO N/A
com.github.johnrengelman.shadow
com.github.johnrengelman.plugin-shadow
N/A 6.1.0
com.moowork.grunt
com.moowork.gulp
com.moowork.node
N/A 🚫 Superseded by com.github.node-gradle.node
com.github.node-gradle.node N/A 3.0.0-rc7
com.jfrog.artifactory jfrog/build-info#356 N/A
com.github.spotbugs TODO N/A
com.gorylenko.gradle-git-properties N/A 2.3.1
org.ajoberstar.grgit TODO N/A
com.github.ben-manes.versions ben-manes/gradle-versions-plugin#410 🙈 v0.42.0
io.franzbecker.gradle-lombok TODO N/A
de.undercouch.download N/A 4.1.0
org.flywaydb.flyway TODO N/A
com.bmuschko.docker-spring-boot-application
com.bmuschko.docker-java-application
com.bmuschko.docker-remote-api
TODO N/A
io.gitlab.arturbosch.detekt N/A v1.10.0-RC1
com.palantir.docker
com.palantir.docker-compose
com.palantir.docker-run
TODO N/A
com.diffplug.gradle.spotless diffplug/spotless#1274 N/A
net.ltgt.errorprone-javacplugin
net.ltgt.errorprone-base
net.ltgt.errorprone
N/A 1.2.0
org.asciidoctor.* asciidoctor/asciidoctor-gradle-plugin#564 N/A
com.github.hierynomus.license TODO N/A
org.jlleitschuh.gradle.ktlint
org.jlleitschuh.gradle.ktlint-idea
N/A v9.3.0
com.google.cloud.tools.jib GoogleContainerTools/jib#3132 N/A
com.google.protobuf N/A 0.8.15
com.jfrog.bintray TODO N/A
org.liquibase.gradle TODO N/A
com.google.gms.google-services N/A 4.3.5
com.google.firebase.crashlytics N/A 2.5.1
com.google.firebase.firebase-perf N/A 1.3.5
androidx.navigation.safeargs
androidx.navigation.safeargs.kotlin
N/A 2.3.1
androidx.benchmark N/A 1.1.0
dagger.hilt.android.plugin N/A 2.29.1-alpha
realm-java realm/realm-java#7299 N/A
nu.studer.rocker N/A 2.0
nu.studer.jooq N/A 5.0
com.slack.keeper N/A 0.6.0
org.nosphere.apache.rat N/A 0.7.0
org.nosphere.gradle.github.actions N/A 1.2.0
marathon-gradle-plugin MarathonLabs/marathon#378 N/A
com.squareup.wire N/A 3.3.0
de.benediktritter.maven-plugin-development britter/maven-plugin-development#8 N/A
com.jaredsburrows.spoon N/A 1.6.0
nebula.lint nebula-plugins/gradle-lint-plugin#309 N/A
nebula.dependency-recommender TODO N/A
nebula.plugin-plugin N/A  17.1.0
nebula.dependency-lock TODO N/A
nebula.resolution-rules TODO N/A
nebula.facet nebula.integtest N/A v8.0.0
com.bmuschko.tomcat TODO N/A
io.freefair.aspectj TODO N/A
dev.nokee.* nokeedev/gradle-native#87 N/A
com.getkeepsafe.dexcount N/A 2.0.0-RC1
dev.jacomet.logging-capabilities N/A v0.9.0
com.vanniktech.android.apk.size vanniktech/gradle-android-apk-size-plugin#96 🚫 Superseded by AGP
com.squareup.hephaestus
com.squareup.anvil 
N/A v2.0.5
com.osacky.fladle  N/A 0.11.0
org.jetbrains.dokka Kotlin/dokka#1217 N/A
com.bugsnag.android.gradle N/A v5.0.0
com.osacky.doctor N/A v0.6.0
de.fayard.refreshVersions
de.fayard.refreshVersions-core
jmfayard/refreshVersions#228 🙈 v0.40.1
com.squareup.sqldelight N/A 1.4.4
me.champeau.gradle.jmh N/A 0.5.2
com.commercehub.gradle.plugin.avro N/A 0.22.0
com.google.osdetector N/A 1.7.0
jacoco-android TODO N/A
com.jakewharton.butterknife TODO N/A
net.saliman.properties stevesaliman/gradle-properties-plugin#39 N/A
com.palantir.baseline-* palantir/gradle-baseline#1719 N/A
de.thetaphi.forbiddenapis N/A 3.3
com.github.bjornvester.xjc bjornvester/xjc-gradle-plugin#20 N/A
org.jetbrains.intellij N/A 1.1.4
com.avast.gradle.docker-compose N/A 0.16.0
com.github.sherter.google-java-format sherter/google-java-format-gradle-plugin#55 N/A
biz.aQute.bnd.builder N/A 6.1.0
net.bytebuddy.byte-buddy-gradle-plugin N/A 1.12.3
org.unbroken-dome.xjc unbroken-dome/gradle-xjc-plugin#39 N/A
org.jetbrains.kotlinx.kover N/A 0.5.1
com.alibaba.arouter alibaba/ARouter#984 N/A
ru.vyarus.animalsniffer  xvik/gradle-animalsniffer-plugin#26 N/A
com.newrelic.agent.android  #13490 (comment) N/A
com.vanniktech.maven.publish  vanniktech/gradle-maven-publish-plugin#259 N/A
de.mannodermaus.android-junit5 N/A 1.8.2.1
dev.icerock.mobile.multiplatform-resources icerockdev/moko-resources#311 N/A
com.dropbox.focus N/A 0.4.0
com.dropbox.dependency-guard dropbox/dependency-guard#28 🙈 0.2.0

Supported, works with no problem reported
🙈 Declares incompatible tasks, works but disables the configuration cache when used
⚠️ Partially supported, works to some extent, reports problems
Unsupported, fails
🚫 Abandoned, won't fix
Untested

Reporting problems to community plugins

If you have tried the configuration cache on your build and found a problematic plugin, please report an issue to the plugin's bug tracker. The troubleshooting section of the dedicated user guide chapter explain how to reason about encountered problems.

A good way to report such problems to community plugin authors is by providing:

  • a link to the configuration cache documentation,
  • steps to reproduce, e.g. plugin version, configuration and which of the plugin's tasks you ran,
  • the HTML report for configuration cache problems you got, so the plugin author can easily reason about the problems,
  • a reproducer build, so the plugin author can easily reproduce the problems.

Here's a good example issue for a community plugin you can use as a template: michel-kraemer/gradle-download-task#156

Then please comment on this issue with a link to the plugin issue so we can add it to the list.

A plugin is missing in the list?

If you have tried the configuration cache on your build and found a problematic plugin that is not in the list above, please report an issue to the plugin's bug tracker as explained in the previous section and comment on this issue with a link to that issue so we can add it to the list.

If you are the author of a plugin that you want to make support the configuration cache or that already supports it, please comment on this issue so we can add it to the list.

@eskatos eskatos changed the title Help popular Gradle plugins to adopt the configuration cache Help third party Gradle plugins to adopt the configuration cache Jun 17, 2020
@eskatos eskatos changed the title Help third party Gradle plugins to adopt the configuration cache Help third party Gradle plugins adopt the configuration cache Jun 17, 2020
@eskatos eskatos changed the title Help third party Gradle plugins adopt the configuration cache Help community Gradle plugins adopt the configuration cache Jun 21, 2020
@eskatos eskatos self-assigned this Jun 26, 2020
@ZakTaccardi
Copy link

ZakTaccardi commented Jul 6, 2020

@eskatos I created JLLeitschuh/ktlint-gradle#364 for org.jlleitschuh.gradle.ktlint

@CristianGM
Copy link
Contributor

CristianGM commented Jul 6, 2020

KeepSafe/dexcount-gradle-plugin#303 for com.getkeepsafe.dexcount

@CristianGM
Copy link
Contributor

CristianGM commented Jul 10, 2020

dexcount gradle plugin fixed at 2.0.0-SNAPSHOT

a new issue created for: com.vanniktech.android.apk.size
vanniktech/gradle-android-apk-size-plugin#96

@rciovati
Copy link

rciovati commented Jul 10, 2020

google/play-services-plugins#148 for google-services-plugin

@CristianGM
Copy link
Contributor

CristianGM commented Jul 13, 2020

com.vanniktech.android.apk.size archived, so it won't be fixed
Fair enough because I hasn't been maintained for years (and I should ask to my team why we are still using it)

@ZakTaccardi
Copy link

ZakTaccardi commented Jul 17, 2020

@eskatos added ben-manes/gradle-versions-plugin#410

@vRallev
Copy link

vRallev commented Jul 29, 2020

The list contains com.squareup.hephaestus, which was renamed to com.squareup.anvil.

@ZacSweers
Copy link

ZacSweers commented Aug 5, 2020

The bugsnag android gradle plugin is probably used in a lot of projects, filed this issue to track as they're in a big rewrite right now: bugsnag/bugsnag-android-gradle-plugin#253

@LouisCAD
Copy link
Contributor

LouisCAD commented Aug 24, 2020

I'm the maintainer of refreshversions (de.fayard.refreshVersions and de.fayard.refreshVersions-core on the Gradle portal plugin), and I'd like to support configuration cache.

I created an issue: jmfayard/refreshVersions#228

@dsvoronin
Copy link

dsvoronin commented Jan 15, 2021

nebula-plugins/nebula-project-plugin#67 Found this problem for nebula plugins family

@simtel12
Copy link
Contributor

simtel12 commented Jan 19, 2021

@eskatos With https://youtrack.jetbrains.com/issue/KT-43605 still open, shouldn't Kotlin still be listed with warnings? And maybe link that issue into the list? :)

@mochadwi
Copy link

mochadwi commented Mar 1, 2021

stevesaliman/gradle-properties-plugin#39 unsupported configuration cache also occurred in this plugins

@joschi
Copy link
Contributor

joschi commented Mar 22, 2021

PR for com.gorylenko.gradle-git-properties: n0mer/gradle-git-properties#164

@uschindler
Copy link

uschindler commented Apr 29, 2021

Please add forbiddenapis plugin to the list: policeman-tools/forbidden-apis#179

It should be easy to fix, working on it. Still there needs some way to detect if build is running inside the gradle daemon or not.

@matejdro
Copy link

matejdro commented May 20, 2021

realm-android:

Ticket: realm/realm-java#7299

Unsupported, . When attempting to build with configuration cache, it crahses with Parameter specified as non-null is null: method io.realm.transformer.build.IncrementalBuild

@sergeykad
Copy link

sergeykad commented Jun 16, 2021

xjc-gradle-plugin

Issue: bjornvester/xjc-gradle-plugin#20

@guilherme-pereira-ifood

We just found this issue on AGP 4.2.1: https://issuetracker.google.com/issues/191303021

@eskatos
Copy link
Member Author

eskatos commented Jun 23, 2021

Thank you @guilherme-pereira-ifood
This is fixed in AGP 7.1.0-alpha03 see https://issuetracker.google.com/issues/189730917#comment5

@ALikhachev
Copy link
Contributor

ALikhachev commented Jul 27, 2021

avast/gradle-docker-compose-plugin#307

@bjhargrave
Copy link
Contributor

bjhargrave commented Nov 5, 2021

I have just added support for the configuration cache to the biz.aQute.bnd.builder plugin in version 6.1.0 (which is currently still under development). See https://github.com/bndtools/bnd/blob/master/gradle-plugins/README.md#gradle-configuration-cache-support for how to configure the biz.aQute.bnd.builder plugin's tasks when using the configuration cache.

@NikolayMetchev
Copy link

NikolayMetchev commented Nov 7, 2021

Jib: GoogleContainerTools/jib#3132

@LouisCAD
Copy link
Contributor

LouisCAD commented Jan 24, 2022

The de.fayard.refreshVersions and de.fayard.refreshVersions-core plugins now support projects using configuration cache since version 0.40.0 (released several hours ago).

⚠️ The no usage of Task.project is impossible for us however, because the alternative APIs don't allow setting the dependencies of the configuration and buildscript configuration of allprojects, nor the repositories and buildscript repositories as task input.

Unless there's an okay API to allow us to have that, we'd like a way to tell Gradle to ignore configuration cache issues for our task, because it's just noise to our users and ourselves for something we can't address.

@eskatos
Copy link
Member Author

eskatos commented Jan 27, 2022

@LouisCAD, thanks for the update!

In Gradle 7.4 there will be an API to declare tasks incompatible with CC. If scheduled, CC will be automatically disabled, see #17464. It should work for your use case.

@NikolayMetchev
Copy link

NikolayMetchev commented Feb 15, 2022

Filed a bug report with the kover plugin here: Kotlin/kotlinx-kover#142

@Goooler
Copy link

Goooler commented Feb 23, 2022

Filed a bug alibaba/ARouter/issues/984.

@Goooler
Copy link

Goooler commented Feb 23, 2022

Link xvik/gradle-animalsniffer-plugin/issues/26.

@pjakubczyk
Copy link

pjakubczyk commented Feb 24, 2022

I'd like to report that
com.newrelic.agent.android v6.4.1
doesn't support Configuration Cache
https://docs.newrelic.com/docs/release-notes/mobile-release-notes/android-release-notes/

error:

Configuration cache state could not be cached: field 'actions' from type 'com.android.build.gradle.internal.pipeline.TransformTask': error writing value of type 'java.util.ArrayList'

@joschi
Copy link
Contributor

joschi commented Feb 24, 2022

@pjakubczyk Maybe you could report this to New Relic as their customer. 😉

@pjakubczyk
Copy link

pjakubczyk commented Feb 24, 2022

@pjakubczyk Maybe you could report this to New Relic as their customer. 😉

I did. Unfortunately their tracking system is not public. I'll share any piece of information as soon I get the response from the support team.

@Goooler
Copy link

Goooler commented Mar 9, 2022

Link vanniktech/gradle-maven-publish-plugin#259.

@Goooler
Copy link

Goooler commented Mar 19, 2022

Link mannodermaus/android-junit5#265.
Solved in 1.8.2.1

@jaredsburrows
Copy link

jaredsburrows commented Apr 24, 2022

Running gradlew --configuration-cache help shows no problems for com.jaredsburrows.spoon.

@jaredsburrows
Copy link

jaredsburrows commented Apr 27, 2022

@eskatos released with configuration cache support in https://github.com/jaredsburrows/gradle-spoon-plugin/releases/tag/1.6.0.

@handstandsam
Copy link

handstandsam commented May 17, 2022

dropbox/focus plugin 0.4.0 compatible with config cache now - cc: @rharter
🙈 dropbox/dependency-guard plugin 0.2.0 Marked incompatible because dependencies can't be cached yet. Might be able to fully support in 7.5 in the future when Dependency Resolution Results is done. - cc: @autonomousapps

@yogurtearl
Copy link
Contributor

yogurtearl commented May 25, 2022

@eskatos Spotless works with config cache as of 6.0.0: diffplug/spotless#644

@Goooler
Copy link

Goooler commented Jul 8, 2022

@eskatos eskatos assigned bamboo and unassigned eskatos Jul 20, 2022
@Goooler
Copy link

Goooler commented Jul 29, 2022

@Goooler
Copy link

Goooler commented Sep 4, 2022

Link cashapp/licensee#72.

@TylerMcCraw
Copy link

TylerMcCraw commented Sep 11, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests