Maven集成p3c-pmd

简介

Maven集成p3c-pmd

配置

Pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<version>3.8</version>
				<configuration>
					<rulesets>
						<ruleset>rulesets/java/ali-comment.xml</ruleset>
						<ruleset>rulesets/java/ali-concurrent.xml</ruleset>
						<ruleset>rulesets/java/ali-constant.xml</ruleset>
						<ruleset>rulesets/java/ali-exception.xml</ruleset>
						<ruleset>rulesets/java/ali-flowcontrol.xml</ruleset>
						<ruleset>rulesets/java/ali-naming.xml</ruleset>
						<ruleset>rulesets/java/ali-oop.xml</ruleset>
						<ruleset>rulesets/java/ali-orm.xml</ruleset>
						<ruleset>rulesets/java/ali-other.xml</ruleset>
						<ruleset>rulesets/java/ali-set.xml</ruleset>
					</rulesets>
					<printFailingErrors>true</printFailingErrors>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>check</goal>
						</goals>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>com.alibaba.p3c</groupId>
						<artifactId>p3c-pmd</artifactId>
						<version>1.3.0</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>
</project>

#执行

mvn pmd:pmd

参考文档

http://maven.apache.org/plugins/maven-pmd-plugin
https://github.com/alibaba/p3c

原创公众号:daodaotest

### Maven PMD 插件在 Nacos 项目中的错误分析与解决方案 在使用 Maven 构建工具时,`maven-pmd-plugin` 是一个用于静态代码分析的插件。然而,在某些情况下,该插件可能会因不支持特定的 `targetJdk` 值而抛出错误。例如,当尝试将 `targetJdk` 设置为 `&#39;21&#39;` 时,可能会遇到如下错误: ``` [ERROR] Failed to execute goal org.apache.maven.plugins:maven-pmd-plugin:3.20.0:pmd (pmd) on project nacos-api: Unsupported targetJdk value &#39;21&#39; ``` 此问题的根本原因在于 `maven-pmd-plugin` 的版本限制。截至当前版本(3.20.0),该插件可能尚未完全支持 Java 21 或更高版本[^1]。 以下是解决此问题的详细方法: --- #### 方法一:降级 JDK 版本 如果项目允许,可以考虑将目标 JDK 版本从 `21` 降级到受支持的版本(如 `17` 或 `11`)。修改 `pom.xml` 文件中的配置如下: ```xml <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> ``` 同时,确保 `maven-pmd-plugin` 的配置中指定正确的 `targetJdk` 值: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.20.0</version> <configuration> <targetJdk>17</targetJdk> </configuration> </plugin> ``` --- #### 方法二:升级 PMD 插件版本 如果必须使用 JDK 21,则需要检查是否有更新版本的 `maven-pmd-plugin` 支持 Java 21。可以通过访问 [Maven Central Repository](https://search.maven.org/) 检查最新版本。 假设最新版本为 `3.25.0`,可以在 `pom.xml` 中更新插件版本: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.25.0</version> <configuration> <targetJdk>21</targetJdk> </configuration> </plugin> ``` 如果仍无法解决问题,可能需要等待官方发布支持 Java 21 的新版本。 --- #### 方法三:禁用 PMD 插件 如果上述方法均不可行,并且 PMD 分析并非项目的核心需求,可以选择暂时禁用该插件。通过以下配置跳过 PMD 执行: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.20.0</version> <executions> <execution> <phase>none</phase> </execution> </executions> </plugin> ``` 或者在命令行中添加 `-Dpmd.skip=true` 参数运行 Maven: ```bash mvn clean install -Dpmd.skip=true ``` --- #### 方法四:自定义 PMD 规则集 如果需要继续使用 PMD 插件,但希望避免因 `targetJdk` 不匹配导致的问题,可以尝试定义自定义规则集文件(`.xml` 格式)。通过规则集文件忽略与 JDK 版本相关的规则。 创建一个规则集文件 `custom-ruleset.xml`: ```xml <?xml version="1.0"?> <ruleset name="Custom Ruleset"> <rule ref="rules/java/unusedcode"/> <rule ref="rules/java/naming"/> </ruleset> ``` 然后在 `pom.xml` 中引用该规则集: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.20.0</version> <configuration> <rulesets> <ruleset>custom-ruleset.xml</ruleset> </rulesets> </configuration> </plugin> ``` --- ### 示例代码块 以下是一个完整的 `pom.xml` 配置示例,适用于方法二(升级 PMD 插件版本): ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.25.0</version> <configuration> <targetJdk>21</targetJdk> </configuration> </plugin> </plugins> </build> ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叨叨软件测试

不敢奢望赞赏,只求点赞关注~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值