class LifecycleExecutionException extends Exception {
    private MavenProject project;

    public LifecycleExecutionException(String message) {
        super(message);
    }

    public LifecycleExecutionException(Throwable cause) {
        super(cause);
    }

    public LifecycleExecutionException(String message, Throwable cause) {
        super(message, cause);
    }

    public LifecycleExecutionException(String message, MavenProject project) {
        super(message);
        this.project = project;
    }

    public LifecycleExecutionException(String message, MojoExecution execution, MavenProject project) {
        super(message);
        this.project = project;
    }

    public LifecycleExecutionException(String message, MojoExecution execution, MavenProject project, Throwable cause) {
        super(message, cause);
        this.project = project;
    }

    public LifecycleExecutionException(MojoExecution execution, MavenProject project, Throwable cause) {
        this(new DefaultMessageBuilderFactory(), execution, project, cause);
    }

    public LifecycleExecutionException(
            MessageBuilderFactory messageBuilderFactory,
            MojoExecution execution,
            MavenProject project,
            Throwable cause) {
        this(createMessage(messageBuilderFactory, execution, project, cause), execution, project, cause);
    }

    public MavenProject getProject() {
        return project;
    }

    private static String createMessage(
            MessageBuilderFactory messageBuilderFactory,
            MojoExecution execution,
            MavenProject project,
            Throwable cause) {<FILL_FUNCTION_BODY>}
}

        MessageBuilder buffer = messageBuilderFactory.builder(256);

        buffer.a("Failed to execute goal");

        if (execution != null) {
            buffer.a(' ');
            buffer.mojo(execution.getGroupId()
                    + ':'
                    + execution.getArtifactId()
                    + ':'
                    + execution.getVersion()
                    + ':'
                    + execution.getGoal());
            buffer.a(' ').strong('(' + execution.getExecutionId() + ')');
        }

        if (project != null) {
            buffer.a(" on project ");
            buffer.project(project.getArtifactId());
        }

        if (cause != null) {
            buffer.a(": ").failure(cause.getMessage());
        }

        return buffer.toString();
    
<methods>public void <init>() ,public void <init>(java.lang.String) ,public void <init>(java.lang.Throwable) ,public void <init>(java.lang.String, java.lang.Throwable) <variables>static final long serialVersionUID