我在将应用程序升级到 Java 21 时遇到问题。现有的 Maven PMD 插件(版本 3.19.0)似乎与 Java 21 不兼容。
以下是问题的细分:
升级要求:我的应用程序需要升级才能使用Java 21。
PMD 插件问题: 在 mvn clean install 命令期间,我收到一条错误消息: [ERROR] 无法执行 goal org.apache.maven.plugins:maven-pmd-plugin:3.19.0:pmd (pmd) on项目域:目标org.apache.maven.plugins的执行pmd:maven-pmd-plugin:3.19.0:pmd失败:org.apache.maven.reporting.MavenReportException:不支持的targetJdk值'21'。
缺乏 Java 21 支持:根据 Maven PMD 插件文档 (https://maven.apache.org/plugins/maven-pmd-plugin/examples/targetJdk.html),支持的版本最高可达Java 20。Java 21 兼容性未明确列出。
鉴于 PMD 插件限制,您能否建议如何继续升级?任何建议或解决方法将不胜感激。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.19.0</version>
<executions>
<execution>
<id>pmd</id>
<phase>verify</phase>
<goals>
<goal>pmd</goal>
</goals>
</execution>
<execution>
<id>pmd-check</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
<execution>
<id>cpd</id>
<phase>verify</phase>
<goals>
<goal>cpd</goal>
</goals>
</execution>
<execution>
<id>cpd-check</id>
<phase>verify</phase>
<goals>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
<configuration>
<targetJdk>21</targetJdk>
<printFailingErrors>true</printFailingErrors>
<minimumTokens>40</minimumTokens>
<minimumPriority>0</minimumPriority>
<linkXRef>false</linkXRef>
<rulesets>
<ruleset>${pmd.ruleset.relative.path}</ruleset>
</rulesets>
<excludeRoots>
<excludeRoot>target/generated-sources</excludeRoot>
</excludeRoots>
</configuration>
</plugin>
这取决于正在使用的 PMD 底层版本 (6.55.0) 不支持 Java 21+。
PMD 7.0.0(于 2024 年 3 月 22 日发布)增加了对 Java 21 和 22 的支持。
由于这是一项重大更改,因此请注意发生了很多变化(请参阅发行说明!)。
PMD 的 Maven 插件需要一些调整才能与 PMD 7.0.0 一起运行,但可以在此处找到详细信息。该插件的下一个版本将不需要这些,并且默认情况下它将使用 PMD 7.0.0。