package com.github.alexcojocaru.mojo.elasticsearch.v2; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import com.github.alexcojocaru.mojo.elasticsearch.v2.step.PostStartClusterSequence; import com.github.alexcojocaru.mojo.elasticsearch.v2.step.PostStartInstanceSequence; import com.github.alexcojocaru.mojo.elasticsearch.v2.step.PreStartClusterSequence; /** * The main plugin mojo to start a forked ES instances. * * @author Alex Cojocaru */ @Mojo(name = "runforked", defaultPhase = LifecyclePhase.PRE_INTEGRATION_TEST) public class RunForkedMojo extends AbstractElasticsearchMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { if (skip) { getLog().info("Skipping plugin execution"); return; } ClusterConfiguration clusterConfig = buildClusterConfiguration(); new PreStartClusterSequence().execute(clusterConfig); for (InstanceConfiguration config : clusterConfig.getInstanceConfigurationList()) { getLog().info(String.format( "Using Elasticsearch [%d] configuration: %s", config.getId(), config)); try { ForkedInstance instance = new ForkedInstance(config); instance.configureInstance(); Thread thread = new Thread(instance); thread.start(); new PostStartInstanceSequence().execute(config); } catch (Exception e) { throw new MojoExecutionException(e.getMessage(), e); } } new PostStartClusterSequence().execute(clusterConfig); } }