Motivation
Why write another plugin for publishing to Maven Central if there are already a number of them? At one time there were 18 plugins listed on the Publishing By Using a Gradle Plugin page. The reality was that the ones we investigated did not do what we required for the YSF.
We would have preferred to use JReleaser, but it leaks far too many dependencies onto the plugin classpath, which makes it incompatible with some other plugins. We then decided to try nmcp, as we know some of the authors, but we found a limitation and even the authors recommended using the vanniktech plugin. This is a great plugin plugin and in reality is the one to use when one needs Kotlin Multi-platform support. In reality it did too much, and we wanted something simpler.
We looked at a number of other plugins, including offerings DanySK, deepmedia, and yannanhub, but all of these plugins suffered from various shortcomings.
What we needed was:
-
Fully automated release by default.
-
Compatible with isolated projects.
-
Compatible with configuration cache
-
Ability to have access tokens securely stored.
-
No hardcoded property names which could clash with other plugins.
-
Handle single project and multi-project layouts correctly.
-
As per convention, push all artifacts in a single ZIP file.
And that is how we arrived at writing an internal plugin first and then extracting it for more general use.