Instead of the super POM, you'd write a Gradle plugin and distribute that. Not exactly sure what you get out of 2. and 3., but if these definitions are reused between builds, they would again go into a plugin, and otherwise into a parent build script.