Testing Multiproject
Note: This example improves the cookbook for multi-project testing.
Your Mojo should have @aggregator
parameter, i.e.:
- with java annotations (maven-plugin-plugin 3.x):
@Mojo( name = "touch", aggregator = true ) public class MyMojo extends AbstractMojo { ... }
- or with javadoc tags:
/** * @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.
Create Stubs
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()
{
...
}
}
Configure project-to-test
pom
<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>