pmd java8,PMD插件因Java 14失败:不支持的targetJdk

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