Troubleshoot AbstractMethodError

RE: Gradle 6.9.1, Java17, Nebula gradle-ospackage-plugin 9.0.0

I’m trying to upgrade our project to JDK 17 while balancing some competing limitations as they relate to a third-party plugin and a custom wrapper my company has around the plugin that is used to generate RPMs for Linux installs. I’m struggling on a couple of levels and could use some guidance.

Firstly, I haven’t ever been able to find a good tutorial on gradle that explains the grammar of the DSL in depth. I’m looking for something that is akin to a sentence diagram that explains more than just the basics of “this is a task”. I’m particularly unclear on the Groovy vs DSL boundaries. In some cases, my IDE (IntelliJ IDEA) is helpful in that I can command-click through to the definition of something, but sometimes I don’t really understand how the dots are connected. Take the following as an example:

artifacts {
  pkgrpms pkgRpm
}

What is the right name to describe what ‘artifacts’ is? At a Java level, it’s an overloaded method on the Project class that takes a closure or an Action, but then what exactly are the pieces inside the closure/action that refer to pkgrpms and what is the right language used to describe all of this? I cannot seem to find good documentation/tutorials that explain this and would appreciate pointers so that I can speak more intelligently about gradle and any issues I might be encountering.

Going back to my specific problem, my builds are failing with the following error:

Caused by: java.lang.AbstractMethodError: Receiver class com.netflix.gradle.plugins.rpm.RpmCopyAction does not define or inherit an implementation of the resolved method 'abstract java.lang.Object getProperty(java.lang.String)' of interface groovy.lang.GroovyObject

Obviously, any thoughts folks have about this specific error would be appreciated (it was not happening prior to upgrading to gradle 6.9.1 and nebula 9.0.0), but I’m also interested in learning how to fish. I’ve tried running the build with --stacktrace, --scan, and --debug, but I’m not getting any more useful information about what exactly is triggering this error. The Java stack trace doesn’t connect the dots to any part of the DSL/groovy code (at least not in a way that I can decipher), so it’s hard for me to figure out who exactly is sending a getProperty message to an RpmCopyInstance. Any advice on debugging these types of errors where one does not own the original source would be appreciated.