1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/*******************************************************************************
* Copyright (c) 2009, 2020 Mountainminds GmbH & Co. KG and Contributors
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Evgeny Mandrikov - initial API and implementation
* Kyle Lieber - implementation of CheckMojo
*
*******************************************************************************/
package org.jacoco.maven;
import java.io.File;
import java.io.IOException;
import java.util.Locale;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.jacoco.report.IReportGroupVisitor;
/**
* Same as <code>report</code>, but provides default values suitable for
* integration-tests:
* <ul>
* <li>bound to <code>report-integration</code> phase</li>
* <li>different <code>dataFile</code></li>
* </ul>
*
* @since 0.6.4
*/
@Mojo(name = "report-integration", defaultPhase = LifecyclePhase.VERIFY, threadSafe = true)
public class ReportITMojo extends AbstractReportMojo {
/**
* Output directory for the reports. Note that this parameter is only
* relevant if the goal is run from the command line or from the default
* build lifecycle. If the goal is run indirectly as part of a site
* generation, the output directory configured in the Maven Site Plugin is
* used instead.
*/
@Parameter(defaultValue = "${project.reporting.outputDirectory}/jacoco-it")
private File outputDirectory;
/**
* File with execution data.
*/
@Parameter(defaultValue = "${project.build.directory}/jacoco-it.exec")
private File dataFile;
@Override
boolean canGenerateReportRegardingDataFiles() {
return dataFile.exists();
}
@Override
boolean canGenerateReportRegardingClassesDirectory() {
return new File(getProject().getBuild().getOutputDirectory()).exists();
}
@Override
void loadExecutionData(final ReportSupport support) throws IOException {
support.loadExecutionData(dataFile);
}
@Override
void addFormatters(final ReportSupport support, final Locale locale)
throws IOException {
support.addAllFormatters(outputDirectory, outputEncoding, footer,
locale);
}
@Override
void createReport(final IReportGroupVisitor visitor,
final ReportSupport support) throws IOException {
support.processProject(visitor, title, getProject(), getIncludes(),
getExcludes(), sourceEncoding);
}
@Override
protected String getOutputDirectory() {
return outputDirectory.getAbsolutePath();
}
@Override
public void setReportOutputDirectory(final File reportOutputDirectory) {
if (reportOutputDirectory != null && !reportOutputDirectory
.getAbsolutePath().endsWith("jacoco-it")) {
outputDirectory = new File(reportOutputDirectory, "jacoco-it");
} else {
outputDirectory = reportOutputDirectory;
}
}
public String getOutputName() {
return "jacoco-it/index";
}
public String getName(final Locale locale) {
return "JaCoCo IT";
}
}
|