具有属性的Maven checkstyle插件

时间:2013-09-08 22:21:10

标签: maven checkstyle

我正在运行Maven 3.0.5并且我正在尝试使用maven checkstyle插件,但我无法让它正确解析我的配置文件。在我的POM的报告部分,我有

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <propertyExpansion>suppressions.file=${basedir}/suppressions.xml</propertyExpansion>
        <configLocation>file:///${basedir}/../buildTools/checkstyle/checkstyle-5.0-checks.xml</configLocation>
    </configuration>
</plugin>

在我的checkstyle.xml文件中,我将抑制过滤器定义为

<module name="SuppressionFilter">
<!--     <property name="file" value="${checkstyle.suppressions.file}"/>
-->
   <property name="file" value="${suppressions.file}"/>
</module>

当我运行checkstyle:checkstyle目标时,我收到一个错误,即没有定义suppressions.file。我可以让它在Eclipse或ant下运行但是当我尝试将它与maven一起使用时,我无法获得要设置的属性。我还尝试使用checkstyle.suppressions.file值并使用propertyExpansion标记或suppressionsFile标记进行设置。

有没有办法从Maven中做到这一点。我正在寻找的最终结果是能够在Eclipse,Ant和Maven中使用相同的规则文件。这将是我要指出的常见文件。同时,我希望能够在每个单独的项目中放置一个suppressions.xml文件,以允许项目控制抑制过滤器。

2 个答案:

答案 0 :(得分:1)

首先我建议不要像configLocation那样使用绝对文件名。更好的解决方案是使用一个包含相应配置文件的工件,比如有一个单独的项目让我们称之为:checkstyle,可以进行版本化等。

checkstyle
  |-- src
  |   `-- main
  |       `-- resources
  |               |-- checkstyle.xml
  |               `-- LICENSE.TXT
  `-- pom.xml


<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example.checkstyle</groupId>
  <artifactId>checkstyle</artifactId>
  <version>1.0</version>
  <name>checkstyle configuration</name>
</project>

制作mvn install后,您可以使用如下配置:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>whatever-project</artifactId>
  <version>1.0</version>
  <packaging>pom</packaging>
  <name>My Project </name>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.10</version>
        <dependencies>
          <dependency>
            <groupId>com.example.checkstyle</groupId>
            <artifactId>checkstyle</artifactId>
            <version>1.0</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.10</version>
        <configuration>
          <configLocation>checkstyle.xml</configLocation>
          <headerLocation>LICENSE.txt</headerLocation>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

答案 1 :(得分:0)

好的,我是通过关注某个网站开始的,该网站声明如果您在报告部分添加配置,它将由构建插件部分选中。这不起作用。通过为检查添加jar文件的依赖项,我仍然需要做更多的工作。我发现的是我必须指定抑制文件,即使我在检查文件中定义了它。我还必须使用指向内部抑制文件的propertyExpansion传递变量(我想要这个,不必另外指定抑制文件)。我现在有我的构建插件节

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.10</version>
    <configuration>
      <propertyExpansion>suppressions.file=${basedir}/suppressions.xml</propertyExpansion>
      <configLocation>file:///${basedir}/../buildTools/checkstyle/checkstyle-5.0-checks.xml</configLocation>
      <suppressionsFile>${basedir}/suppressions.xml</suppressionsFile>
    </configuration>
</plugin>