将应用程序升级到 Java 21 和 Maven PMD 插件不兼容

问题描述 投票:0回答:1

我在将应用程序升级到 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>
java maven pom.xml pmd
1个回答
0
投票

这取决于正在使用的 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。

© www.soinside.com 2019 - 2024. All rights reserved.