我有一个Maven 2项目,我想配置Checkstyle报表插件,以便只分析我的一些类。 我发现 maven.checkstyle.excludes
属性,但尽管将其作为命令行参数(使用 -D=maven.checkstyle.excludes=...
) 我无法让它工作。 我在插件文档页上找不到任何信息。 理想的情况是,我希望能够在这个插件的 <configuration>
的部分。
如果这个问题是关于Maven 2的,那么这个属性是 "Checkstyle.excludes"。excludes
并接收一个以逗号分隔的Ant模式列表。所以可以在命令行中传递这个信息。
-Dexcludes=**/generated/**/*
或者在插件配置中进行设置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<excludes>**/generated/**/*</excludes>
</configuration>
</plugin>
另一个选择是使用 抑制过滤器.
例如,你可以使用 SuppressionCommentFilter
到 抑制包含以下内容的评论之间的审计事件 CHECKSTYLE:OFF
和包含以下内容的评论 CHECKSTYLE:ON
(然后将这些注释添加到你不想检查的类或代码部分)。
如果像我一样,你到这里来是为了寻找一种排除掉 产生的 源的检查样式,这样做。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.15</version>
<configuration>
<sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
</configuration>
</plugin>
默认情况下 checkstyle:checkstyle
Checkstyle插件的目标是使用 ${project.compileSourceRoots}
,这显然包括生成的源目录。
如果你把它改成 ${project.build.sourceDirectory}
,它将只使用源目录,而不是任何生成的源目录。
请注意,当 <sourceDirectory>
已被废弃,替代方案。<sourceDirectories>
,似乎并不奏效。
此外,如果你想排除 多重 独立的文件夹,你可以添加多个独立的路径,像这样用逗号隔开。
<excludes>org/log4j/*,com/acme/**/*,com/companyb/*</excludes>
上面的答案对我来说没有用,因为我是在maven中运行代码生成的,maven也将targetgenerated添加为source dir.下面的解决方案可行:你必须使用显式的checkstyle-suppressions.xml配置文件,并从你的配置中激活它:。
下面的解决方案可行:你必须使用一个显式的checkstyle-suppressions.xml配置文件,并从你的配置中激活它。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<configLocation>checkstyle.xml</configLocation>
<suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
[...]
排除目标文件夹的suppressions文件是这样的。
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
<suppress files="[/\\]target[/\\]" checks=".*" />
</suppressions>