我正在尝试将Maven Checkstyle插件与外部配置文件一起使用。该插件可以使用或不使用外部配置文件,并且checksistle警告因设置configLocation而异。所以它似乎应该工作正常,但事实并非如此。无论我在外部配置文件中输入什么内容,都会显示相同的警告。事实上,我可以完全清除文件,似乎没有任何改变。
在pom:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<configuration>
<configLocation>google_checks.xml</configLocation>
<encoding>UTF-8</encoding>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
</configuration>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
试图使用这个文件:
https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml
在pom中,如果我将名称更改为“does_not_exist.xml”,它将报告它找不到包含以下消息的文件:
无法在位置找到配置文件:does_not_exist.xml
由于它不会使用正确的文件名打印此消息,因此它告诉我它可以找到具有正确名称的文件(google_checks.xml)。
在文件中:
<module name="LineLength">
<property name="max" value="100"/>
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
</module>
如果我将值更改为10,我仍然会收到警告:
行超过100个字符......
我在跑:
mvn clean verify
我已经尝试将google_checks.xml文件放在项目的根目录和src/main/resources
目录中。结果相同的位置。
我最终想改变行长度和缩进的规则,但由于它不关心我在文件中输入的内容,我不知道如何做到这一点。关于如何使它尊重外部文件中的内容的任何想法?
相当简单但是:你在问题中设置XML的configLocation
被注入到maven-checkstyle-plugin的CheckstyleViolationCheckMojo#configLocation中,因为这个变量是私有的,它没有显示在他们的Javadoc上,但它在源代码中有记录。
该描述表明:
此参数将解析为资源,URL,然后是文件。如果成功解析,配置的内容将复制到$ {project.build.directory} /checkstyle-configuration.xml文件中,然后作为配置传递给Checkstyle。
有2个预定义的规则集。
- sun_checks.xml:Sun检查。
- google_checks.xml:Google Checks。
我认为正在发生的是,它没有以正常方式解析参数,因为google_checks.xml
是预定义的规则集,因此将加载默认的google_checks.xml
。
如果你想使用你自己的自定义配置器,你应该将它命名为google_checks.xml
和sun_checks.xml
以外的东西