Maven Checkstyle configLocation 被忽略?

标签 maven checkstyle

尝试根据guidelines on the apache site在maven pom中设置自定义checkstyle配置在非常简单的情况下不起作用。

我使用 Maven 推荐的目录布局(即 src/main/java/、src/main/resources)创建了一个项目 MyProject,单个文件 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 是有效的,因为可以使用 Carboni 在 previous stack overflow post 中概述的策略在属性中更改 checkstyle.config.location ,但这会在迁移到多模块项目时导致问题,并且与“官方”apache maven checkstyle 指令不同。

最佳答案

是的,我发现 apache 网站上的指南已经过时了。通过在互联网上搜寻并将一些碎片拼凑在一起,我成功地解决了这个问题。

移至<build>标签工作了一段时间,但当更新到最新的检查样式时,它再次被忽略。我发现我必须设置一个属性:

<project ...>

 ....

  <properties>
    <checkstyle.config.location>properties/checkstyle-configuration.xml</checkstyle.config.location>
  </properties>

  <build>
    ...

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.9.1</version>
      </plugin>
    </plugins>
  </build>

  ...

</project>

这是我如何创建自己的 checkstyle 自定义检查示例的一部分:
http://blog.blundellapps.com/create-your-own-checkstyle-check/

取自此处的源代码:
https://github.com/blundell/CreateYourOwnCheckStyleCheck

关于Maven Checkstyle configLocation 被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8975096/

相关文章:

java - 如何对同一类型的 Checkstyle 问题应用多个快速修复?

checkstyle - Java Checkstyle 规则限制方法空行

java - 如何删除 Eclipse 中的默认检查样式?

java - 缺少 Artifact net.sourceforge.jdpapi :jdpapi-java:jar:1. 0.1

java - ANTLR4:消耗所有剩余输入直到 EOF

java - Maven 无法构建 pom

java - 尝试构建简单的微服务,出现错误 "Cannot execute request on any known server"

java - 如何从 Web 项目中存在的依赖项 jar(使用 maven)中排除包?

java - 在 Maven Checkstyle 插件报告中排除类

maven-2 - Maven 2 checkstyle 插件版本 2.5 - configLocation 问题