How do you create a reporting plugin without using internal APIs

I am trying to create a Gradle plugin that produces an XML and HTML report. I have looked at the Gradle reporting interfaces, Gradle source code for various plugins that produce reports, and the one third party plugin that appears to use the Gradle reporting interfaces. All examples appear to use internal APIs to implement the report container (e.g. TaskReportContainer). Is it possible to use only public API’s without having to re-implement the NamedObjectCollection interfaces?

It’s currently not possible.

It’s something that will happen eventually. No schedule for this as of yet.