@Override
public Mojo executeMojo(MavenSession session, MavenProject project, MojoExecution execution) throws Exception {
SessionScope sessionScope = container.lookup(SessionScope.class);
try {
sessionScope.enter();
sessionScope.seed(MavenSession.class, session);
MojoExecutionScope executionScope = container.lookup(MojoExecutionScope.class);
try {
executionScope.enter();
executionScope.seed(MavenProject.class, project);
executionScope.seed(MojoExecution.class, execution);
Mojo mojo = lookupConfiguredMojo(session, execution);
mojo.execute();
MojoExecutionEvent event = new MojoExecutionEvent(session, project, execution, mojo);
for (MojoExecutionListener listener : container.lookupList(MojoExecutionListener.class)) {
listener.afterMojoExecutionSuccess(event);
}
return mojo;
} finally {
executionScope.exit();
}
} finally {
sessionScope.exit();
}
}