<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>compile</id>
<phase>validate</phase>
<configuration>
<tasks>
<exec executable="roo">
<arg value="quit"/>
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
...
The above has the antrun plugin run roo on Maven's validation phase with the quit command. This causes Roo to start, generate missing artifacts and quit immediately. Since the antrun task doesn't fork Maven will wait until it exits prior to compiling and all should be well. This hopefully will help someone out.