Current state (gradle-plugins): Gradle 9 is already partly in use (/bnd/gradle-plugins/gradle/wrapper/gradle-wrapper.properties uses 9.2.0), but there are still “full support” gaps.
Mandatory (for robust Gradle 9 compatibility/full support)
-
Remove Gradle internal API usage in plugin runtime code
BndWorkspacePlugin: org.gradle.api.internal.plugins.DslObject, org.gradle.internal.metaobject.*
BeanProperties: org.gradle.api.internal.DynamicObjectAware, org.gradle.internal.metaobject.*
BundleTaskExtension: org.gradle.api.java.archives.internal.DefaultManifest
These are not stable public APIs and are the main risk for Gradle 9+ breakage.
-
Remove internal API usage in build scripts
/bnd/gradle-plugins/biz.aQute.bnd.gradle/build.gradle.kts imports org.gradle.util.internal.VersionNumber.
- This should be replaced with non-internal version parsing logic.
-
Replace org.gradle.util.GradleVersion usage
/bnd/gradle-plugins/biz.aQute.bnd.gradle/src/main/java/aQute/bnd/gradle/BndUtils.java
- Even if currently present, it is a risky dependency for long-term Gradle 9+ compatibility.
Optional (improves confidence and support quality)
-
Expand explicit Gradle 9 TestKit coverage
TestHelper.groovy often selects Gradle 8.x on common JDKs; keep compatibility matrix but add dedicated always-on Gradle 9.x path for plugin tests.
-
Formalize Gradle 9 support in docs
- README currently says “at least Gradle 8.0” (/bnd/gradle-plugins/README.md).
- Add explicit “validated on Gradle 9.x” statement and any known caveats.
-
Audit configuration-cache behavior for workspace plugin paths
- Some code paths still rely on dynamic/project graph behavior that may limit “full support” expectations.
Nice to have
-
Upgrade/support tooling versions proactively
- Review versions like com.gradle.plugin-publish and com.gradle.enterprise in gradle-plugins/settings.gradle.kts for latest Gradle 9 ecosystem alignment.
-
Add a Gradle 9 compatibility checklist in gradle-plugins docs
- Internal API ban, TestKit version coverage, config-cache expectations, and CI gates.
Current state (gradle-plugins): Gradle 9 is already partly in use (
/bnd/gradle-plugins/gradle/wrapper/gradle-wrapper.propertiesuses 9.2.0), but there are still “full support” gaps.Mandatory (for robust Gradle 9 compatibility/full support)
Remove Gradle internal API usage in plugin runtime code
BndWorkspacePlugin: org.gradle.api.internal.plugins.DslObject, org.gradle.internal.metaobject.*BeanProperties: org.gradle.api.internal.DynamicObjectAware, org.gradle.internal.metaobject.*BundleTaskExtension: org.gradle.api.java.archives.internal.DefaultManifestThese are not stable public APIs and are the main risk for Gradle 9+ breakage.Remove internal API usage in build scripts
/bnd/gradle-plugins/biz.aQute.bnd.gradle/build.gradle.kts imports org.gradle.util.internal.VersionNumber.Replace org.gradle.util.GradleVersion usage
/bnd/gradle-plugins/biz.aQute.bnd.gradle/src/main/java/aQute/bnd/gradle/BndUtils.javaOptional (improves confidence and support quality)
Expand explicit Gradle 9 TestKit coverage
TestHelper.groovyoften selects Gradle 8.x on common JDKs; keep compatibility matrix but add dedicated always-on Gradle 9.x path for plugin tests.Formalize Gradle 9 support in docs
Audit configuration-cache behavior for workspace plugin paths
Nice to have
Upgrade/support tooling versions proactively
Add a Gradle 9 compatibility checklist in gradle-plugins docs