8

我正在尝试让 maven-checkstyle-plugin 对我们所有的项目使用相同的配置文件。

我尝试了几种方法,但没有一种是有效的。

唯一可行的方法是当我将配置文件放在我的 maven 项目的根目录中,然后在 pom.xml 中使用该名称作为 configLocation 配置参数

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

                <configuration>
                    <configLocation>my-checkstyle-checker.xml</configLocation>
                </configuration>
            </plugin>

我试过指定一个绝对磁盘路径,但这似乎不起作用。(考虑到最终目标是让 jenkins 执行 checkstyle,如果文件位于指定位置的 jenkins 服务器上,这似乎是一个有效的选项)

我还尝试制作一个单独的 jar 文件,仅包含 xml 文件,然后将其用作依赖项。(这也会将配置集中在 1 个位置并防止项目特定的偏差。)不幸的是,这也不起作用。

[错误] 无法在项目 jenkins-sandbox-project 上执行目标 org.apache.maven.plugins:maven-checkstyle-plugin:2.10:checkstyle (default-cli):生成 Checkstyle 报告时出错。checkstyle 执行期间失败:无法在位置 my-checkstyle-checker.xml 找到配置文件:找不到资源“my-checkstyle-checker.xml”。-> [帮助 1]

有没有人可以告诉我我在这里做错了什么?

似乎它只知道与启动 maven 命令的位置相同的文件。

  • maven-checkstyle-plugin 版本:2.10
  • maven 命令: mvn checkstyle:checkstyle
4

3 回答 3

16

创建一个单独的 Maven 项目,其中仅包含 Checkstyle 配置。就我而言,我调用了这个项目checkstyle-config,它包含以下内容:

checkstyle-config/src/main/resources/checkstyle.config.xml
checkstyle-config/src/main/resources/checkstyle.suppressions.xml
checkstyle-config/pom.xml

这个项目的 POM 文件很简单:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.totaalsoftware.incidentmanager</groupId>
  <artifactId>checkstyle-config</artifactId>
  <version>2.0.0-SNAPSHOT</version>
</project>

构建它,以便安装它。然后将其用作 Checkstyle 执行的依赖项,例如:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>check</goal>
        </goals>
      </execution>
    </executions>
    <dependencies>
      <dependency>
        <groupId>com.totaalsoftware.incidentmanager</groupId>
        <artifactId>checkstyle-config</artifactId>
        <version>2.0.0-SNAPSHOT</version>
      </dependency>
    </dependencies>
    <configuration>
      <configLocation>checkstyle.config.xml</configLocation>
      <suppressionsLocation>checkstyle.suppressions.xml</suppressionsLocation>

      ... other configuration ...

    </configuration>
  </plugin>
于 2013-10-30T18:01:15.627 回答
3

我有一个类似的问题。我通过以下配置解决了它。

${project.basedir}/src/main/resources/checkstyle.xml

注意:我的 checkstyle 文件位于“src/main/resources”

于 2017-11-18T12:53:37.847 回答
2

在我的插件配置中定义位置时我也遇到了一些问题,但能够通过覆盖插件使用的 Maven 属性 checkstyle.config.location 来解决这个问题。请参阅下面的示例,该示例适用于多模块 maven 项目并且需要很少的开销。

<checkstyle.config.location>${project.parent.basedir}/my_checks.xml</checkstyle.config.location>
于 2016-08-15T17:39:12.610 回答