1

我正在运行 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 目标时,我收到一个错误,即未定义 suppresss.file。我可以让它在 Eclipse 或 ant 下运行,但是当我尝试将它与 maven 一起使用时,我无法设置要设置的属性。我还尝试使用 checkstyle.suppressions.file 值并将其设置为 propertyExpansion 标记或 suppresssFile 标记。

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

4

2 回答 2

1

好的,我通过关注一些站点开始此操作,该站点声明如果您在报告部分添加配置,它将被构建插件部分拾取。这不起作用。通过为检查添加 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>
于 2013-09-14T14:01:39.007 回答
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>
于 2013-09-09T07:39:33.180 回答