Yes, FIVE (so obviously all of them didn’t fit the title):
We need a page that walks through all of these together and clearly discern their differences. Why should I use one or the other? Especially because…
All of these userguides are not complete and touches only on details that particular userguide found worth mentioning. For each of these plugins I could come up with a whole bunch of questions. I find myself over and over again playing the role of a private detective trying to figure out what tasks was added to my project and what local file system modifications was the result of running a particular task. Somewhere - I argue - documentation must exist that clearly specifies exactly what each plugin do and what each task do. I strongly dislike and feel uneasy about copy-pasting code into my project without knowing what exactly it does. Point being that each plugin documentation alone (hey, I love Gradle’s documentation don’t get me wrong, probably the best documented project out there) couldn’t possibly enable even the smartest one of us to figure out their differences which makes it uber important to give the user a page that lists all of these plugins and highlight their differences, this will serve to the user as a good start, give him a path moving forward.
Furthermore, since we are on the topic… The Application Plugin states that applying this guy also applies the Java- and Distribution plugin together with - I assume - some sprinkled sugar on top. Which makes one wonder, does the Distribution plugin always have to be applied in pair with a language-specific plugin? What happens if I explicitly apply the Java and Distribution plugin? If the Application Plugin adds “script files”, shouldn’t this be a separate “Script Files Plugin”? I.e., I declare “real stuff” and functional operations like “Java”, “Distribution” and “Script Files” instead of dealing with “semantics” and then spend days googling the Internet trying to figure out what these semantics do to my project.
But I think it is excellent that the userguide for The Application Plugin at least tells me that it “implicitly” applies this and that other plugin. But this just makes me wonder what implicit plugins do the other plugins apply like The Java Library Plugin and the Java Library Distribution Plugin? If I use these guys, do I as a user have to explicit apply The Java Plugin, maybe even more plugins??
I think a lot of my confusion stems from not being able to find a source that lists all of the plugins and their differences! Then our secondary focus should also be to upgrade the plugin docs and make sure they are very very clear about what other plugins they apply and what things they do! =)