melix / japicmp-gradle-plugin

A Gradle plugin for JApicmp
Apache License 2.0
137 stars 30 forks source link

Support for overrideCompatibilityChangeParameters #43

Closed jkwatson closed 2 years ago

jkwatson commented 3 years ago

I see this is in the maven plugin, and would love it for the gradle version.

In particular, I would very much like to be able to say that METHOD_NEW_DEFAULT does not count as a binary compatibility change.

Is there any way to do this today with the gradle plugin?

simonbasle commented 2 years ago

Same here! I've explored filtering and custom rules for that purpose but it doesn't work. Best I was able to do is modify the level of some Violation in the rich report, but that only makes the rich report empty (the task is still considered a failure because the underlying japicmp call doesn't know of that change).

what would be needed is more of an Excludes configuration like for classes and methods: list categories of changes in the configuration and have the plugin configure japicmp to consider these categories as compatible.

Japicmp (the library, not the plugin) has a japicmp.model.JApiCompatibilityChange enum, and a japicmp.cmp.JarArchiveComparatorOptions.OverrideCompatibilityChange class that can be used in japicmp options to mark a JApiCompatibilityChange as binary/source compatible.

I will submit a PR to that effect.

shakuzen commented 2 years ago

We'd also be interested in this for Micrometer to accept METHOD_NEW_DEFAULT changes.