I am trying to have a pom.xml file with PMD plugin integrated into build stage.
PMD version 3.13.0
Oracle JDK 14
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
group
artifact
1.0-SNAPSHOT
jar
14
14
UTF-8
UTF-8
3.13.0
org.apache.maven.plugins
maven-pmd-plugin
org.apache.maven.plugins
maven-pmd-plugin
${pmd.plugin.version}
org.apache.maven.plugins
maven-pmd-plugin
true
true
14
check
mvn clean install
fails with
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-pmd-plugin:3.13.0:pmd (pmd) on project notes-service: Execution pmd of goal org.apache.maven.plugins:maven-pmd-plugin:3.13.0:pmd failed: org.apache.maven.reporting.MavenR
eportException: Unsupported targetJdk value '14'. -> [Help 1]
What I tried
With the latest version, there is an error
Exception in thread "main" java.util.ServiceConfigurationError: net.sourceforge.pmd.lang.Language: Provider net.sourceforge.pmd.lang.java.JavaLanguageModule could not be instantiated
at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:584)
at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:806)
at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:724)
at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1396)
at net.sourceforge.pmd.lang.LanguageRegistry.(LanguageRegistry.java:35)
at net.sourceforge.pmd.lang.LanguageRegistry.(LanguageRegistry.java:24)
at org.apache.maven.plugins.pmd.PmdReport.getPMDConfiguration(PmdReport.java:723)
at org.apache.maven.plugins.pmd.PmdReport.executePmd(PmdReport.java:411)
at org.apache.maven.plugins.pmd.PmdReport.executePmdWithClassloader(PmdReport.java:376)
at org.apache.maven.plugins.pmd.PmdReport.canGenerateReport(PmdReport.java:350)
at org.apache.maven.reporting.AbstractMavenReport.execute(AbstractMavenReport.java:120)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:355)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:200)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.NoSuchMethodError: 'void net.sourceforge.pmd.lang.metrics.internal.AbstractLanguageMetricsProvider.(java.lang.Class, java.lang.Class)'
at net.sourceforge.pmd.lang.java.JavaLanguageHandler$JavaMetricsProvider.(JavaLanguageHandler.java:48)
at net.sourceforge.pmd.lang.java.AbstractJavaHandler.(AbstractJavaHandler.java:53)
at net.sourceforge.pmd.lang.java.JavaLanguageHandler.(JavaLanguageHandler.java:35)
at net.sourceforge.pmd.lang.java.JavaLanguageHandler.(JavaLanguageHandler.java:32)
at net.sourceforge.pmd.lang.java.JavaLanguageModule.(JavaLanguageModule.java:20)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:782)
... 35 more
解决方案
I had to add these dependencies
net.sourceforge.pmd
pmd-java
6.23.0
net.sourceforge.pmd
pmd-core
6.23.0
The whole pom.xml is
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
group
artifact
1.0-SNAPSHOT
jar
14
14
UTF-8
UTF-8
3.13.0
org.apache.maven.plugins
maven-pmd-plugin
org.apache.maven.plugins
maven-pmd-plugin
${pmd.plugin.version}
org.apache.maven.plugins
maven-pmd-plugin
true
true
14
check
net.sourceforge.pmd
pmd-java
6.23.0
net.sourceforge.pmd
pmd-core
6.23.0