Skip to content

Evaluating Gradle 9 update requirements and plugin support #27

Description

@peterkir

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)

  1. 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.
  2. 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.
  3. 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)

  1. 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.
  2. 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.
  3. 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

  1. 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.
  2. Add a Gradle 9 compatibility checklist in gradle-plugins docs

    • Internal API ban, TestKit version coverage, config-cache expectations, and CI gates.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions