Class MojoExecutor

java.lang.Object
org.twdata.maven.mojoexecutor.MojoExecutor

public class MojoExecutor extends Object
Executes an arbitrary mojo using a fluent interface. This is meant to be executed within the context of a Maven mojo. Here is an execution that invokes the dependency plugin:
 executeMojo(
              plugin(
                      groupId("org.apache.maven.plugins"),
                      artifactId("maven-dependency-plugin"),
                      version("2.0")
              ),
              goal("copy-dependencies"),
              configuration(
                      element(name("outputDirectory"), "${project.build.directory}/foo")
              ),
              executionEnvironment(
                      project,
                      session,
                      pluginManager
              )
          );
 
  • Field Details

    • logger

      private static final org.slf4j.Logger logger
  • Constructor Details

    • MojoExecutor

      public MojoExecutor()
  • Method Details

    • executeMojo

      public static void executeMojo(org.apache.maven.model.Plugin plugin, String goal, org.codehaus.plexus.util.xml.Xpp3Dom configuration, MojoExecutor.ExecutionEnvironment env) throws org.apache.maven.plugin.MojoExecutionException
      Entry point for executing a mojo
      Parameters:
      plugin - The plugin to execute
      goal - The goal to execute
      configuration - The execution configuration
      env - The execution environment
      Throws:
      org.apache.maven.plugin.MojoExecutionException - If there are any exceptions locating or executing the mojo
    • mojoExecution

      private static org.apache.maven.plugin.MojoExecution mojoExecution(org.apache.maven.plugin.descriptor.MojoDescriptor mojoDescriptor, String executionId, org.codehaus.plexus.util.xml.Xpp3Dom configuration)
    • executionEnvironment

      public static MojoExecutor.ExecutionEnvironment executionEnvironment(org.apache.maven.project.MavenProject mavenProject, org.apache.maven.execution.MavenSession mavenSession, org.apache.maven.plugin.BuildPluginManager pluginManager)
      Constructs the MojoExecutor.ExecutionEnvironment instance fluently
      Parameters:
      mavenProject - The current Maven project
      mavenSession - The current Maven session
      pluginManager - The Build plugin manager
      Returns:
      The execution environment
      Throws:
      NullPointerException - if mavenProject, mavenSession or pluginManager are null
    • executionEnvironment

      public static MojoExecutor.ExecutionEnvironment executionEnvironment(org.apache.maven.execution.MavenSession mavenSession, org.apache.maven.plugin.BuildPluginManager pluginManager)
      Constructs the MojoExecutor.ExecutionEnvironment instance fluently
      Parameters:
      mavenSession - The current Maven session
      pluginManager - The Build plugin manager
      Returns:
      The execution environment
      Throws:
      NullPointerException - if mavenProject, mavenSession or pluginManager are null
    • configuration

      public static org.codehaus.plexus.util.xml.Xpp3Dom configuration(MojoExecutor.Element... elements)
      Builds the configuration for the goal using Elements
      Parameters:
      elements - A list of elements for the configuration section
      Returns:
      The elements transformed into the Maven-native XML format
    • plugin

      public static org.apache.maven.model.Plugin plugin(String groupId, String artifactId)
      Defines the plugin without its version or dependencies.
      Parameters:
      groupId - The group id
      artifactId - The artifact id
      Returns:
      The plugin instance
    • plugin

      public static org.apache.maven.model.Plugin plugin(String groupId, String artifactId, String version)
      Defines a plugin without dependencies.
      Parameters:
      groupId - The group id
      artifactId - The artifact id
      version - The plugin version
      Returns:
      The plugin instance
    • plugin

      public static org.apache.maven.model.Plugin plugin(String groupId, String artifactId, String version, List<org.apache.maven.model.Dependency> dependencies)
      Defines a plugin.
      Parameters:
      groupId - The group id
      artifactId - The artifact id
      version - The plugin version
      dependencies - The plugin dependencies
      Returns:
      The plugin instance
    • groupId

      public static String groupId(String groupId)
      Wraps the group id string in a more readable format
      Parameters:
      groupId - The value
      Returns:
      The value
    • artifactId

      public static String artifactId(String artifactId)
      Wraps the artifact id string in a more readable format
      Parameters:
      artifactId - The value
      Returns:
      The value
    • version

      public static String version(String version)
      Wraps the version string in a more readable format
      Parameters:
      version - The value
      Returns:
      The value
    • dependencies

      public static List<org.apache.maven.model.Dependency> dependencies(org.apache.maven.model.Dependency... dependencies)
      Creates a list of dependencies.
      Parameters:
      dependencies - the dependencies
      Returns:
      A list of dependencies
    • dependency

      public static org.apache.maven.model.Dependency dependency(String groupId, String artifactId, String version)
      Defines a dependency
      Parameters:
      groupId - The group id
      artifactId - The artifact id
      version - The plugin version
      Returns:
      the dependency instance
    • goal

      public static String goal(String goal)
      Wraps the goal string in a more readable format
      Parameters:
      goal - The value
      Returns:
      The value
    • name

      public static String name(String name)
      Wraps the element name string in a more readable format
      Parameters:
      name - The value
      Returns:
      The value
    • element

      public static MojoExecutor.Element element(String name, String value)
      Constructs the element with a textual body
      Parameters:
      name - The element name
      value - The element text value
      Returns:
      The element object
    • element

      public static MojoExecutor.Element element(String name, String value, MojoExecutor.Attributes attributes)
      Constructs the element with a textual body and attributes
      Parameters:
      name - The element name
      value - The element text value
      attributes - The element attributes
      Returns:
      The element object
    • element

      public static MojoExecutor.Element element(String name, String value, MojoExecutor.Attribute attribute)
      Constructs the element with a textual body and only attribute
      Parameters:
      name - The element name
      value - The element text value
      attribute - The element attribute
      Returns:
      The element object
    • element

      public static MojoExecutor.Element element(String name, MojoExecutor.Element... elements)
      Constructs the element containing child elements
      Parameters:
      name - The element name
      elements - The child elements
      Returns:
      The Element object
    • element

      public static MojoExecutor.Element element(String name, MojoExecutor.Attributes attributes, MojoExecutor.Element... elements)
      Constructs the element containing child elements and attributes
      Parameters:
      name - The element name
      attributes - The element attributes
      elements - The child elements
      Returns:
      The Element object
    • element

      public static MojoExecutor.Element element(String name, MojoExecutor.Attribute attribute, MojoExecutor.Element... elements)
      Constructs the element containing child elements and only attribute
      Parameters:
      name - The element name
      attribute - The element attribute
      elements - The child elements
      Returns:
      The Element object
    • attributes

      public static MojoExecutor.Attributes attributes(MojoExecutor.Attribute... attributes)
      Constructs the attributes wrapper
      Parameters:
      attributes - The attributes
      Returns:
      The Attributes object
    • attribute

      public static MojoExecutor.Attribute attribute(String name, String value)
      Constructs the attribute
      Parameters:
      name - The attribute name
      value - The attribute value
      Returns:
      The Attribute object