Gradle 2.14 breaks plugins using ConsoleRenderer

plugins

(Juan Martín Sotuyo Dodero) #1

Any plugins attempting to show a clickable path to a file on console has been using ConsoleRenderer for quite some time now. However, 2.14 moves the class to an “internal” package, effectively breaking them with a ClassNotFoundException.

Old plugins are no longer compatible with 2.14, and they can’t be compiled against 2.14 either.


(Sterling Greene) #2

Sorry @jsotuyod.

org.gradle.logging wasn’t consider part of the public API.

Our rule is if the class has a page in our Javadoc/Groovydocs, it’s public. Some older packages do not include internal in the package name, so going by package name alone isn’t enough right now. We’re trying to make more things public and promote internal/leaking types to public as well. We’re renaming packages to internal as we can.

To maintain backwards compatibility for your plugin, your best bet is to copy what ConsoleRenderer did into your plugin. There isn’t a public API within Gradle for this at the moment.


(Juan Martín Sotuyo Dodero) #3

Will do so, thanks.

Still I can’t help but wonder why such breaking change couldn’t wait untill 3.0 (next release) and have the classes clearly marked on this release.

I’m seeing way too many plugins break due to this change, which isn’t to be expected on a minor release under semantic versioning.