Implementation

State of the development as of 22/5/2012

Following usage for a plugin developer is working, with annotations near previous javadoc tags:

Improvement Idea #1

rename roleHint to hint to match Plexus @Requirement

DONE

Improvement Idea #2

Remove readonly attribute from @Parameter (was used for Maven components like ${project} to mark that it should not be configured by plugin user), and replace by a new attribute of @Component which is mutually exclusive with role+hint

evaluation: ${project.compileClasspathElements} is an expression that would be readonly but doesn't really resolve to a component, so the term isn't appropriate. Need a better term.

Improvement Idea #3

Introduce JSR-330, by requiring plugin developer to mark injected fields with standard @Inject and make @Parameter and @Component standard Qualifier.
Costs more writing for plugin developer (these @Inject) without much win other than mark the intent in a standard way (and shouldn't change much for maven-plugin-tools)

evaluation: since plugin.xml is still generated and content is injected by Maven core using this plugin.xml and not annotations taken from bytecode, this is not really useful and causes more confusion/harm than benefit

for the multiple goals in a single class, yes, a future feature can be added when @Mojo is used as a method annotation
I only see one issue to implement this feature: annotations are available after compilation, but such a feature would require generating source, then before compilation...
I don't think that this feature qill be available for the first release, but we can work on it after if really requested