I've found an annoying bug regarding custom artifact handlers. A custom artifact handler provided by a plugin with extensions is not resolved when another plugin with extensions is defined in parent pom. Note that the behavior is the same whether the first plugin is defined in child project or parent project.
In order to illustrate the problem, I've used the maven-eclipse-plugin. It generates a .classpath only when the project's artifact handler's language is set to java. My child project's packaging is "jboss-sar" whose artifact handler is provided by jboss-packaging-maven-plugin. "jboss-sar" 's language is set to java, so whenever the jboss'sar artifact handler is properly resolved, the .classpath file should be generated.
I've used the nbm-maven-plugin as the second perturbing plugin in order to break the resolution.
I've attached a set of it tests which each illustrate a working or broken scenario. In order to test those, simply run the following command at the root of each parent project:
mvn clean eclipse:clean install eclipse:eclipse
If the file .classpath is properly generated in "module1" child project, then the test passes, else it fails. Attached it tests contain "OK" when they pass and "KO" when then fails.
I've tried hard to debug plexus component resolution internals but after a whole day of headackes I gave up and ended up posting this issue hoping that somebody more used to maven and plexus internals would find a solution.