1 /*******************************************************************************
2  * Copyright (c) 2009, 2015 Mountainminds GmbH & Co. KG and Contributors
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  *    Evgeny Mandrikov - initial API and implementation
10  *
11  *******************************************************************************/
12 package org.jacoco.maven;
13 
14 import java.util.List;
15 
16 import org.apache.maven.plugin.AbstractMojo;
17 import org.apache.maven.plugin.MojoExecutionException;
18 import org.apache.maven.plugin.MojoFailureException;
19 import org.apache.maven.project.MavenProject;
20 
21 /**
22  * Base class for JaCoCo Mojos.
23  */
24 public abstract class AbstractJacocoMojo extends AbstractMojo {
25 
26 	/**
27 	 * Maven project.
28 	 *
29 	 * @parameter property="project"
30 	 * @readonly
31 	 */
32 	private MavenProject project;
33 
34 	/**
35 	 * A list of class files to include in instrumentation/analysis/reports. May
36 	 * use wildcard characters (* and ?). When not specified everything will be
37 	 * included.
38 	 *
39 	 * @parameter
40 	 */
41 	private List<String> includes;
42 
43 	/**
44 	 * A list of class files to exclude from instrumentation/analysis/reports.
45 	 * May use wildcard characters (* and ?). When not specified nothing will be
46 	 * excluded.
47 	 *
48 	 * @parameter
49 	 */
50 	private List<String> excludes;
51 
52 	/**
53 	 * Flag used to suppress execution.
54 	 *
55 	 * @parameter property="jacoco.skip" default-value="false"
56 	 */
57 	private boolean skip;
58 
execute()59 	public final void execute() throws MojoExecutionException,
60 			MojoFailureException {
61 		if (skip) {
62 			getLog().info(
63 					"Skipping JaCoCo execution because property jacoco.skip is set.");
64 			skipMojo();
65 			return;
66 		}
67 		executeMojo();
68 	}
69 
70 	/**
71 	 * Executes Mojo.
72 	 *
73 	 * @throws MojoExecutionException
74 	 *             if an unexpected problem occurs. Throwing this exception
75 	 *             causes a "BUILD ERROR" message to be displayed.
76 	 * @throws MojoFailureException
77 	 *             if an expected problem (such as a compilation failure)
78 	 *             occurs. Throwing this exception causes a "BUILD FAILURE"
79 	 *             message to be displayed.
80 	 */
executeMojo()81 	protected abstract void executeMojo() throws MojoExecutionException,
82 			MojoFailureException;
83 
84 	/**
85 	 * Skips Mojo.
86 	 */
skipMojo()87 	protected void skipMojo() {
88 	}
89 
90 	/**
91 	 * @return Maven project
92 	 */
getProject()93 	protected final MavenProject getProject() {
94 		return project;
95 	}
96 
97 	/**
98 	 * Returns the list of class files to include.
99 	 *
100 	 * @return class files to include, may contain wildcard characters
101 	 */
getIncludes()102 	protected List<String> getIncludes() {
103 		return includes;
104 	}
105 
106 	/**
107 	 * Returns the list of class files to exclude.
108 	 *
109 	 * @return class files to exclude, may contain wildcard characters
110 	 */
getExcludes()111 	protected List<String> getExcludes() {
112 		return excludes;
113 	}
114 
115 }
116