verify that: 1) there should only be one plugin of a type loaded at a time (easy to change by having the manager use the artifactId as the name - removing the version) 2) if 1.2 and 1.2-SNAPSHOT are present, use 1.2 (difficult, because we have no concept of version X > version Y since you can use any type of string) 3) if 1.2 and 1.3 are present, use 1.3 4) if a plugin dependency element is present, use that version. also clarify: plugin downloaded via dependency or goal to shared $MAVEN_HOME/plugins will: 1) have correct permissions, 2) will subsequently be extracted by other users 3) will correctly update the plugin cache also document: - that plugins that hook into goals without any property based control are bad form (eg programmatically removing linkcheck from the list of registered reports) - check maven doesn't include any such plugins the reason for the above is that one project might depend on a plugin that does that, and could consequently break others. The alternative is a far more complicated set of checks about which plugins should be applied to which projects (possibly levels of install to maven, install to user and install to project via dependency only), but that should be tried at a later date.