Note: This example improves the cookbook for multi-project testing.
Your Mojo should have @aggregator parameter, i.e.:
@Mojo( name = "touch", aggregator = true ) public class MyMojo extends AbstractMojo { ... }
/** * @goal touch * @aggregator */ public class MyMojo extends AbstractMojo { ... }
To test a Mojo in a multiproject area, you need to define several stubs, i.e. for the main test project and its modules.
Stub for the main test project:
public class MyProjectStub extends MavenProjectStub { /** * Default constructor */ public MyProjectStub() { ... setExecutionRoot( true ); } /** {@inheritDoc} */ public MavenProject getExecutionProject() { return this; } }
Stubs for the subprojects:
public class SubProject1Stub extends MavenProjectStub { /** * Default constructor */ public SubProject1Stub() { ... } }
public class SubProject2Stub extends MavenProjectStub { /** * Default constructor */ public SubProject2Stub() { ... } }
<project> ... <build> <plugins> <plugin> <artifactId>maven-my-plugin</artifactId> <configuration> ... <project implementation="org.apache.maven.plugin.my.stubs.MyProjectStub"/> <reactorProjects> <project implementation="org.apache.maven.plugin.my.stubs.SubProject1Stub"/> <project implementation="org.apache.maven.plugin.my.stubs.SubProject2Stub"/> </reactorProjects> </configuration> </plugin> </plugins> </build> </project>