001 package org.apache.maven.execution;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import org.apache.maven.plugin.MojoExecution;
023 import org.apache.maven.project.MavenProject;
024
025 /**
026 * Holds data relevant for an execution event.
027 *
028 * @author Benjamin Bentmann
029 */
030 public interface ExecutionEvent
031 {
032
033 /**
034 * The possible types of execution events.
035 */
036 enum Type
037 {
038 ProjectDiscoveryStarted,
039 SessionStarted,
040 SessionEnded,
041 ProjectSkipped,
042 ProjectStarted,
043 ProjectSucceeded,
044 ProjectFailed,
045 MojoSkipped,
046 MojoStarted,
047 MojoSucceeded,
048 MojoFailed,
049 ForkStarted,
050 ForkSucceeded,
051 ForkFailed,
052 ForkedProjectStarted,
053 ForkedProjectSucceeded,
054 ForkedProjectFailed,
055 }
056
057 /**
058 * Gets the type of the event.
059 *
060 * @return The type of the event, never {@code null}.
061 */
062 Type getType();
063
064 /**
065 * Gets the session from which this event originates.
066 *
067 * @return The current session, never {@code null}.
068 */
069 MavenSession getSession();
070
071 /**
072 * Gets the current project (if any).
073 *
074 * @return The current project or {@code null} if not applicable.
075 */
076 MavenProject getProject();
077
078 /**
079 * Gets the current mojo execution (if any).
080 *
081 * @return The current mojo execution or {@code null} if not applicable.
082 */
083 MojoExecution getMojoExecution();
084
085 /**
086 * Gets the exception that caused the event (if any).
087 *
088 * @return The exception or {@code null} if none.
089 */
090 Exception getException();
091
092 }