Skip to content

Commit c31b29a

Browse files
committed
[MPMD-389] Upgrade to Doxia 2.0.0 Milestone Stack
This closes #126
1 parent 4d7c080 commit c31b29a

File tree

48 files changed

+273
-242
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+273
-242
lines changed

pom.xml

+5-42
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ under the License.
8686
<pmdVersion>7.3.0</pmdVersion>
8787
<slf4jVersion>1.7.36</slf4jVersion>
8888
<resolverVersion>1.4.1</resolverVersion>
89-
<doxiaVersion>1.12.0</doxiaVersion>
89+
<doxiaVersion>2.0.0-M12</doxiaVersion>
9090
<compilerPluginVersion>3.11.0</compilerPluginVersion>
91-
<sitePluginVersion>3.12.1</sitePluginVersion>
92-
<projectInfoReportsPluginVersion>3.4.3</projectInfoReportsPluginVersion>
93-
<jxrPluginVersion>3.3.0</jxrPluginVersion>
91+
<sitePluginVersion>3.20.0</sitePluginVersion>
92+
<projectInfoReportsPluginVersion>3.7.0</projectInfoReportsPluginVersion>
93+
<jxrPluginVersion>3.4.0</jxrPluginVersion>
9494
<project.build.outputTimestamp>2024-07-10T19:17:23Z</project.build.outputTimestamp>
9595
</properties>
9696

@@ -193,55 +193,18 @@ under the License.
193193
<groupId>org.apache.maven.doxia</groupId>
194194
<artifactId>doxia-sink-api</artifactId>
195195
<version>${doxiaVersion}</version>
196-
<exclusions>
197-
<exclusion>
198-
<groupId>org.codehaus.plexus</groupId>
199-
<artifactId>plexus-container-default</artifactId>
200-
</exclusion>
201-
</exclusions>
202196
</dependency>
203197
<dependency>
204198
<groupId>org.apache.maven.doxia</groupId>
205199
<artifactId>doxia-core</artifactId>
206200
<version>${doxiaVersion}</version>
207-
<exclusions>
208-
<exclusion>
209-
<groupId>org.codehaus.plexus</groupId>
210-
<artifactId>plexus-container-default</artifactId>
211-
</exclusion>
212-
</exclusions>
213-
</dependency>
214-
<dependency>
215-
<groupId>org.apache.maven.doxia</groupId>
216-
<artifactId>doxia-site-renderer</artifactId>
217-
<version>1.11.1</version>
218-
<scope>runtime</scope>
219-
<!--
220-
Note: doxia-site-renderer needs to be defined AFTER pmd:
221-
doxia-site-renderer requires transitively dom4j 1.1 which provides a very old version of jaxen (same jar).
222-
PMD requires a newer version of jaxen, which is not compatible.
223-
-->
224-
<exclusions>
225-
<exclusion>
226-
<groupId>org.apache.httpcomponents</groupId>
227-
<artifactId>httpclient</artifactId>
228-
</exclusion>
229-
<exclusion>
230-
<groupId>org.codehaus.plexus</groupId>
231-
<artifactId>plexus-container-default</artifactId>
232-
</exclusion>
233-
<exclusion>
234-
<groupId>org.codehaus.plexus</groupId>
235-
<artifactId>plexus-component-api</artifactId>
236-
</exclusion>
237-
</exclusions>
238201
</dependency>
239202

240203
<!-- shared -->
241204
<dependency>
242205
<groupId>org.apache.maven.reporting</groupId>
243206
<artifactId>maven-reporting-impl</artifactId>
244-
<version>3.2.0</version>
207+
<version>4.0.0-M15</version>
245208
</dependency>
246209

247210
<!-- plexus -->

src/it/MPMD-165/verify.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* under the License.
1818
*/
1919

20-
File pmdHtml = new File( basedir, "target/site/pmd.html" );
20+
File pmdHtml = new File( basedir, "target/reports/pmd.html" );
2121
assert pmdHtml.exists()
2222

2323
// Groovy's getText() automatically detects the correct encoding, so that UTF-16 works out of the box

src/it/MPMD-289-format-html-check/verify.groovy

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ assert buildLog.exists()
2424
File pmdXml = new File( basedir, 'target/pmd.xml' )
2525
assert pmdXml.exists()
2626

27-
File pmdHtmlReport = new File ( basedir, 'target/site/pmd.html' )
27+
File pmdHtmlReport = new File ( basedir, 'target/reports/pmd.html' )
2828
assert pmdHtmlReport.exists()
2929

3030
File cpdXml = new File( basedir, 'target/cpd.xml' )
3131
assert cpdXml.exists()
3232

33-
File cpdHtmlReport = new File ( basedir, 'target/site/cpd.html' )
33+
File cpdHtmlReport = new File ( basedir, 'target/reports/cpd.html' )
3434
assert cpdHtmlReport.exists()

src/it/MPMD-304-toolchain-support/verify.groovy

+9-9
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@ assert buildLog.text.contains('[WARNING] CPD ' + pmdVersion + ' has found 1 dupl
4444
assert pmdXml.text.contains( '<violation beginline="24" endline="24" begincolumn="29" endcolumn="35" rule="ExtendsObject"' )
4545
assert pmdXml.text.contains( '<violation beginline="36" endline="36" begincolumn="9" endcolumn="32" rule="DontCallThreadRun"' )
4646

47-
File pmdSite = new File( basedir, 'target/site/pmd.html' )
48-
assert pmdSite.exists()
49-
assert pmdSite.text.contains( 'Sample.java' )
50-
assert pmdSite.text.contains( 'ExtendsObject' )
51-
assert pmdSite.text.contains( 'DontCallThreadRun' )
47+
File pmdHtmlReport = new File( basedir, 'target/reports/pmd.html' )
48+
assert pmdHtmlReport.exists()
49+
assert pmdHtmlReport.text.contains( 'Sample.java' )
50+
assert pmdHtmlReport.text.contains( 'ExtendsObject' )
51+
assert pmdHtmlReport.text.contains( 'DontCallThreadRun' )
5252

5353
assert cpdXml.text.contains( 'Name.java' )
5454
assert cpdXml.text.contains( 'Name2.java' )
5555

56-
File cpdSite = new File( basedir, 'target/site/cpd.html' )
57-
assert cpdSite.exists()
58-
assert cpdSite.text.contains( 'Name.java' )
59-
assert cpdSite.text.contains( 'Name2.java' )
56+
File cpdHtmlReport = new File( basedir, 'target/reports/cpd.html' )
57+
assert cpdHtmlReport.exists()
58+
assert cpdHtmlReport.text.contains( 'Name.java' )
59+
assert cpdHtmlReport.text.contains( 'Name2.java' )

src/it/mpmd-80-included/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ under the License.
2828

2929
<name>MPMD-80 included</name>
3030
<description>
31-
Test that the cpd.xml and pmd.xml files are included in the generated site.
31+
Test that the cpd.xml and pmd.xml files are included in the generated reports output directory.
3232
</description>
3333

3434
<build>
@@ -48,7 +48,7 @@ under the License.
4848
<version>@project.version@</version>
4949
<configuration>
5050
<skipPmdError>false</skipPmdError>
51-
<includeXmlInSite>true</includeXmlInSite>
51+
<includeXmlInReports>true</includeXmlInReports>
5252
</configuration>
5353
</plugin>
5454
</plugins>

src/main/java/org/apache/maven/plugins/pmd/AbstractPmdReport.java

+13-14
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.apache.maven.execution.MavenSession;
4040
import org.apache.maven.model.ReportPlugin;
4141
import org.apache.maven.model.Reporting;
42+
import org.apache.maven.plugin.MojoExecution;
4243
import org.apache.maven.plugins.annotations.Component;
4344
import org.apache.maven.plugins.annotations.Parameter;
4445
import org.apache.maven.project.MavenProject;
@@ -160,12 +161,12 @@ public abstract class AbstractPmdReport extends AbstractMavenReport {
160161
protected boolean aggregate;
161162

162163
/**
163-
* Whether to include the xml files generated by PMD/CPD in the site.
164+
* Whether to include the XML files generated by PMD/CPD in the {@link #getReportOutputDirectory()}.
164165
*
165166
* @since 3.0
166167
*/
167168
@Parameter(defaultValue = "false")
168-
protected boolean includeXmlInSite;
169+
protected boolean includeXmlInReports;
169170

170171
/**
171172
* Skip the PMD/CPD report generation if there are no violations or duplications found. Defaults to
@@ -252,12 +253,6 @@ public abstract class AbstractPmdReport extends AbstractMavenReport {
252253
// Read-only parameters
253254
// ----------------------------------------------------------------------
254255

255-
/**
256-
* The projects in the reactor for aggregation report.
257-
*/
258-
@Parameter(property = "reactorProjects", readonly = true)
259-
protected List<MavenProject> reactorProjects;
260-
261256
/**
262257
* The current build session instance. This is used for
263258
* toolchain manager API calls and for dependency resolver API calls.
@@ -276,6 +271,14 @@ protected MavenProject getProject() {
276271
return project;
277272
}
278273

274+
protected List<MavenProject> getReactorProjects() {
275+
return reactorProjects;
276+
}
277+
278+
protected MojoExecution getMojoExecution() {
279+
return mojoExecution;
280+
}
281+
279282
protected String constructXRefLocation(boolean test) {
280283
String location = null;
281284
if (linkXRef) {
@@ -460,11 +463,7 @@ protected boolean isXml() {
460463
return "xml".equals(format);
461464
}
462465

463-
/**
464-
* {@inheritDoc}
465-
*/
466-
@Override
467-
public boolean canGenerateReport() {
466+
protected boolean canGenerateReportInternal() throws MavenReportException {
468467
if (!showPmdLog && !warnedAboutShowPmdLog) {
469468
getLog().warn("The parameter \"showPmdLog\" has been deprecated and will be removed."
470469
+ "Setting it to \"false\" has no effect.");
@@ -490,7 +489,7 @@ public boolean canGenerateReport() {
490489
return false;
491490
}
492491
} catch (IOException e) {
493-
getLog().error(e);
492+
throw new MavenReportException("Failed to determine files to process for PMD", e);
494493
}
495494
return true;
496495
}

src/main/java/org/apache/maven/plugins/pmd/CpdReport.java

+6-14
Original file line numberDiff line numberDiff line change
@@ -144,24 +144,16 @@ public void executeReport(Locale locale) throws MavenReportException {
144144
}
145145

146146
@Override
147-
public boolean canGenerateReport() {
147+
public boolean canGenerateReport() throws MavenReportException {
148148
if (skip) {
149-
getLog().info("Skipping CPD execution");
150149
return false;
151150
}
152151

153-
boolean result = super.canGenerateReport();
152+
boolean result = canGenerateReportInternal();
154153
if (result) {
155-
try {
156-
executeCpd();
157-
if (skipEmptyReport) {
158-
result = cpdResult.hasDuplications();
159-
if (!result) {
160-
getLog().debug("Skipping report since skipEmptyReport is true and there are no CPD issues.");
161-
}
162-
}
163-
} catch (MavenReportException e) {
164-
throw new RuntimeException(e);
154+
executeCpd();
155+
if (skipEmptyReport) {
156+
result = cpdResult.hasDuplications();
165157
}
166158
}
167159
return result;
@@ -190,7 +182,7 @@ private void executeCpd() throws MavenReportException {
190182
request.setTargetDirectory(targetDirectory.getAbsolutePath());
191183
request.setOutputEncoding(getOutputEncoding());
192184
request.setFormat(format);
193-
request.setIncludeXmlInSite(includeXmlInSite);
185+
request.setIncludeXmlInReports(includeXmlInReports);
194186
request.setReportOutputDirectory(getReportOutputDirectory().getAbsolutePath());
195187

196188
Toolchain tc = getToolchain();

src/main/java/org/apache/maven/plugins/pmd/PmdReport.java

+6-15
Original file line numberDiff line numberDiff line change
@@ -313,25 +313,16 @@ public void executeReport(Locale locale) throws MavenReportException {
313313
}
314314

315315
@Override
316-
public boolean canGenerateReport() {
316+
public boolean canGenerateReport() throws MavenReportException {
317317
if (skip) {
318-
getLog().info("Skipping PMD execution");
319318
return false;
320319
}
321320

322-
boolean result = super.canGenerateReport();
321+
boolean result = canGenerateReportInternal();
323322
if (result) {
324-
try {
325-
executePmd();
326-
if (skipEmptyReport) {
327-
result = pmdResult.hasViolations();
328-
if (!result) {
329-
getLog().debug("Skipping report since skipEmptyReport is true and "
330-
+ "there are no PMD violations.");
331-
}
332-
}
333-
} catch (MavenReportException e) {
334-
throw new RuntimeException(e);
323+
executePmd();
324+
if (skipEmptyReport) {
325+
result = pmdResult.hasViolations();
335326
}
336327
}
337328
return result;
@@ -370,7 +361,7 @@ private void executePmd() throws MavenReportException {
370361
request.setOutputEncoding(getOutputEncoding());
371362
request.setFormat(format);
372363
request.setSkipPmdError(skipPmdError);
373-
request.setIncludeXmlInSite(includeXmlInSite);
364+
request.setIncludeXmlInReports(includeXmlInReports);
374365
request.setReportOutputDirectory(getReportOutputDirectory().getAbsolutePath());
375366
request.setLogLevel(determineCurrentRootLogLevel());
376367

src/main/java/org/apache/maven/plugins/pmd/exec/CpdReportConsumer.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ public void accept(CPDReport report) {
6767

6868
private void writeXmlReport(CPDReport cpd) throws IOException {
6969
File targetFile = writeReport(cpd, new XMLRenderer(request.getOutputEncoding()), "xml");
70-
if (request.isIncludeXmlInSite()) {
71-
File siteDir = new File(request.getReportOutputDirectory());
72-
if (!siteDir.exists() && !siteDir.mkdirs()) {
73-
throw new IOException("Couldn't create report output directory: " + siteDir);
70+
if (request.isIncludeXmlInReports()) {
71+
File outputDirectory = new File(request.getReportOutputDirectory());
72+
if (!outputDirectory.exists() && !outputDirectory.mkdirs()) {
73+
throw new IOException("Couldn't create report output directory: " + outputDirectory);
7474
}
75-
FileUtils.copyFile(targetFile, new File(siteDir, "cpd.xml"));
75+
FileUtils.copyFile(targetFile, new File(outputDirectory, "cpd.xml"));
7676
}
7777
}
7878

@@ -88,7 +88,7 @@ private File writeReport(CPDReport cpd, CPDReportRenderer renderer, String exten
8888

8989
File targetDir = new File(request.getTargetDirectory());
9090
if (!targetDir.exists() && !targetDir.mkdirs()) {
91-
throw new IOException("Couldn't create report output directory: " + targetDir);
91+
throw new IOException("Couldn't create report target directory: " + targetDir);
9292
}
9393

9494
File targetFile = new File(targetDir, "cpd." + extension);

src/main/java/org/apache/maven/plugins/pmd/exec/CpdRequest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public class CpdRequest implements Serializable {
5050
private String targetDirectory;
5151
private String outputEncoding;
5252
private String format;
53-
private boolean includeXmlInSite;
53+
private boolean includeXmlInReports;
5454
private String reportOutputDirectory;
5555
private boolean ignoreAnnotations;
5656
private boolean ignoreIdentifiers;
@@ -96,8 +96,8 @@ public void setFormat(String format) {
9696
this.format = format;
9797
}
9898

99-
public void setIncludeXmlInSite(boolean includeXmlInSite) {
100-
this.includeXmlInSite = includeXmlInSite;
99+
public void setIncludeXmlInReports(boolean includeXmlInReports) {
100+
this.includeXmlInReports = includeXmlInReports;
101101
}
102102

103103
public void setReportOutputDirectory(String reportOutputDirectory) {
@@ -148,8 +148,8 @@ public String getFormat() {
148148
return format;
149149
}
150150

151-
public boolean isIncludeXmlInSite() {
152-
return includeXmlInSite;
151+
public boolean isIncludeXmlInReports() {
152+
return includeXmlInReports;
153153
}
154154

155155
public String getReportOutputDirectory() {

0 commit comments

Comments
 (0)