Попытка установить пользовательскую конфигурацию checkstyle в maven pom в соответствии с рекомендациями на сайте apache не работает в очень простой случай.
Я создал проект MyProject, используя макет каталога, рекомендованный Maven (т.е. src/main/java/, src/main/resources), один файл MyClass.java:
package com.myproject;
public class MyClass {
public static void main(String[] args) {
System.out.println("This line is longer than 80 characters which returns an error in sun_checks.xml, however my_checks.xml allows for much longer lines and will not return a long line error.");
}
}
пустой файл checkstyle, my_checks.xml:
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.2//EN"
"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
<module name="Checker">
<property name="severity" value="warning"/>
<module name="TreeWalker">
</module>
</module>
и файл 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myproject</groupId>
<artifactId>A_Project</artifactId>
<name>A Project</name>
<version>1.0.0</version>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.8</version>
<configuration>
<configLocation>my_checks.xml</configLocation>
</configuration>
</plugin>
</plugins>
</reporting>
</project>
Запуск "mvn -X checkstyle: checkstyle" использует sun_checks.xml(по умолчанию) вместо использования конфигурации в файле my_checks.xml, что можно увидеть как в результате ошибок checkstyle, так и вывода отладки (например, '[DEBUG] request.getConfigLocation() config/sun_checks.xml').
Я знаю, что my_checks.xml действителен, потому что checkstyle.config.location можно изменить в свойствах, используя стратегию, описанную Carboni в предыдущем столбце, но это вызывает проблемы при переходе к многомодульным проектам и отличается от "официальных" инструкций checkstyle apache maven.