如何将myven-checkstyle-plugin的checkstyle配置外部化

时间:2013-10-30 12:37:24

标签: maven plugins configuration checkstyle

我正在尝试让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>

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

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

  

[错误]无法在项目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'。 - &GT; [帮助1]

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

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

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

2 个答案:

答案 0 :(得分:10)

创建一个单独的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>

答案 1 :(得分:1)

我有类似的问题。我用以下配置解决了它。

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

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