I have project composed of a reactor/parent pom.xml and a few module.
In the parent pom.xml, I have somthing like this :
<plugins>
....
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<!-- The assembly plugin is not flexible enought for what we have to do -->
<phase>package</phase>
<configuration>
<tasks>
<property name="version.number" value="${project.version}"/>
<ant antfile="src/build/build.xml" inheritRefs="true"/>
</tasks>
</configuration>
<goals><goal>run</goal></goals>
</execution>
</executions>
<inherited>false</inherited>
</plugin>
...
</plugins>
In one of the module, I have
<plugins>
...
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-test-sources</phase>
<configuration>
<tasks>
<ant antfile="src/test/ant/build.xml" inheritRefs="true"/>
</tasks>
<testSourceRoot>target/generated-sources/nextmock</testSourceRoot>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<!-- Required to use javac -->
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.5</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</plugin>
...
</plugins>
It seems that the dependencies is in the sub-module is not loaded, probably because the plugin is loaded in the parent pom (or in the reactor pom which is the same in many cases) and not updated afterward.
The simple work around is to place the dependencies into the reactor plugin declaration. (A strange thing is that the dependecy doesn't need to be present in the module declaration anymore in that case)
I tried also to place it only int the pluginManagment section but it doesn't work. The dependency is not loaded.
The issue raised here is: when a parent project use a plugin without specifying dependencies, the submodules can not add dependencies to this plusgin. I detected it with antrun, but I guess it is exactly the same with other plugins.
I retested it with maven 2.0.2 and it is still failing.
I also have to add that it only fails when we launch the build from the parent project. If you launch the build in the child project, the dependencies are correctly loaded.