1 package org.apache.maven.plugin.invoker;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.plugin.AbstractMojo;
23 import org.apache.maven.plugin.MojoExecutionException;
24 import org.apache.maven.plugin.MojoFailureException;
25 import org.apache.maven.plugin.invoker.model.io.xpp3.BuildJobXpp3Reader;
26 import org.apache.maven.plugins.annotations.LifecyclePhase;
27 import org.apache.maven.plugins.annotations.Mojo;
28 import org.apache.maven.plugins.annotations.Parameter;
29 import org.codehaus.plexus.util.ReaderFactory;
30 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
31
32 import java.io.File;
33 import java.io.IOException;
34
35
36
37
38
39
40
41 @Mojo( name = "verify", defaultPhase = LifecyclePhase.VERIFY, threadSafe = true )
42 public class VerifyMojo
43 extends AbstractMojo
44 {
45
46
47
48
49
50
51 @Parameter( property = "invoker.skip", defaultValue = "false" )
52 private boolean skipInvocation;
53
54
55
56
57
58
59 @Parameter( property = "invoker.reportsDirectory", defaultValue = "${project.build.directory}/invoker-reports" )
60 private File reportsDirectory;
61
62
63
64
65
66
67
68 @Parameter( property = "maven.test.failure.ignore", defaultValue = "false" )
69 private boolean ignoreFailures;
70
71
72
73
74
75
76 @Parameter( defaultValue = "false" )
77 private boolean suppressSummaries;
78
79
80
81
82
83
84
85 public void execute()
86 throws MojoExecutionException, MojoFailureException
87 {
88 if ( skipInvocation )
89 {
90 getLog().info( "Skipping invocation per configuration."
91 + " If this is incorrect, ensure the skipInvocation parameter is not set to true." );
92 return;
93 }
94
95 File[] reportFiles = ReportUtils.getReportFiles( reportsDirectory );
96 if ( reportFiles.length <= 0 )
97 {
98 getLog().info( "No invoker report files found, nothing to check." );
99 return;
100 }
101
102 InvokerSession invokerSession = new InvokerSession();
103 for ( int i = 0, size = reportFiles.length; i < size; i++ )
104 {
105 File reportFile = reportFiles[i];
106 try
107 {
108 BuildJobXpp3Reader reader = new BuildJobXpp3Reader();
109 invokerSession.addJob( reader.read( ReaderFactory.newXmlReader( reportFile ) ) );
110 }
111 catch ( XmlPullParserException e )
112 {
113 throw new MojoExecutionException( "Failed to parse report file: " + reportFile, e );
114 }
115 catch ( IOException e )
116 {
117 throw new MojoExecutionException( "Failed to read report file: " + reportFile, e );
118 }
119 }
120
121 if ( !suppressSummaries )
122 {
123 invokerSession.logSummary( getLog(), ignoreFailures );
124 }
125
126 invokerSession.handleFailures( getLog(), ignoreFailures );
127 }
128
129 }