试图找出我是否做错了什么,或者这是否是maven校验样式插件中的一个bug。如果我做了mvn checkstyle:check,我就会得到这个:
jonathanfisher@odin ~/dev/snapjms/snapjms $ mvn checkstyle:check
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building snapjms 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-checkstyle-plugin:2.17:check (default-cli) @ snapjms ---
[INFO] There is 1 error reported by Checkstyle 6.11.2 with /Users/jonathanfisher/dev/snapjms/snapjms/target/checkstyle-rules.xml ruleset.
[ERROR] src/main/java/org/xxx/xxx/snapjms/jms/factories/UnsupportedPayloadException.java:[8] (sizes) LineLength: Line is longer than 135 characters (found 144).
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.411 s
[INFO] Finished at: 2016-06-16T15:33:58-05:00
[INFO] Final Memory: 17M/371M如果我这么做了,mvn checkstyle:checkstyle注意到它是如何切换到sun_checks.xml的
jonathanfisher@odin ~/dev/snapjms/snapjms $ mvn checkstyle:checkstyle
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building snapjms 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-checkstyle-plugin:2.17:checkstyle (default-cli) @ snapjms ---
[INFO] There are 451 errors reported by Checkstyle 6.11.2 with sun_checks.xml ruleset.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.904 s
[INFO] Finished at: 2016-06-16T15:35:46-05:00
[INFO] Final Memory: 24M/361M下面是我的内联配置:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.17</version>
<inherited>true</inherited>
<configuration>
<logViolationsToConsole>true</logViolationsToConsole>
<checkstyleRules>
<module name="Checker">
<module name="SuppressionCommentFilter" />
<module name="LineLength">
<property
name="max"
value="135" />
<property
name="ignorePattern"
value="@version|@see" />
</module>
</checkstyleRules>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
</plugins>
</build>
<reporting>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
</reporting>mvn:site上的报告也使用了sun_checks.xml,我做错了什么?
发布于 2016-06-16 21:03:59
checkstyle目标从配置的configLocation读取规则集文件。默认情况下,这是插件中包含的sun_checks.xml:
指定要使用的XML配置的位置。..。 Maven Check样式插件中包含了两个预定义的规则集:
sun_checks.xml:太阳检查。google_checks.xml:谷歌检查。默认值: sun_checks.xml
与check目标相反,它没有允许使用内联检查器配置的checkstyleRules参数,因此,重写了为规则集指定位置的需要。
我在JIRA上找不到关于这方面的增强请求,所以也许可以要求它:内联配置是在马切克斯蒂-211中引入的,它显然只覆盖了check目标。
这解释了您的输出:
mvn checkstyle:check,所使用的规则是在<checkstyleRules>参数中定义的规则;mvn checkstyle:checkstyle,没有设置规则的位置,因此它默认为sun_checks.xml。因此,要将您的规则与check目标一起使用(例如,将其用作mvn site的报告目标时运行),您将需要有一个外部文件,并将其引用如下:
<configLocation>checkstyle.xml</configLocation>发布于 2018-01-24 22:06:29
下一个代码片段来自CheckstyleViolationCheckMojo
@Parameter( property = "checkstyle.config.location", defaultValue = "sun_checks.xml" )
private String configLocation;这是在执行命令时执行的mojo。
mvn checkstyle:check如果仔细查看@Parameter注释有一个名为"checkstyle.config.location“的参数名称属性,默认值是"sun_checks.xml",则可以通过使用-D标志在命令行传递该值来覆盖它。因此,如果您想使用不同的检查样式配置,只需在执行命令时添加它,如下所示:
mvn checkstyle:check -Dcheckstyle.config.location=[path to my checkstyle file]
mvn checkstyle:check -Dcheckstyle.config.location=google_checks.xml -Dcheckstyle.violationSeverity=warning
mvn checkstyle:check -Dcheckstyle.config.location=~/custom_checks.xml请注意,google检查已经包含在checkstyle中,因此它被解析为一个资源,并且您不必添加路径,除非您有它的自定义版本。
您可以通过检查源代码来查看可以传递的所有属性。
https://stackoverflow.com/questions/37869001
复制相似问题