7

我在 maven 2 中使用 checkstyle 插件。我现在想将我的配置文件从默认文件切换到 a) 在线文件或 b) 本地文件。我尝试了以下两件事,但都没有奏效。有什么建议么?

A) 本地文件,直接在我的项目文件夹中 pom.xml 旁边

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <configuration>
        <configLocation>checkstyle.xml</configLocation>
    </configuration>
</plugin>

B)远程文件,存储在服务器上

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <configuration>
        <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation>
    </configuration>
</plugin>

这两种情况都会导致如下错误:

[INFO] Checkstyle 报告生成发生错误。嵌入式错误:在 checkstyle 执行期间失败找不到资源“文件:checkstyle.xml”。

任何帮助,将不胜感激!

4

3 回答 3

6

我已经在 J​​ira 中看到了与插件版本 2.5 相关的几个问题(例如configLocationMCHECKSTYLE - 129MCHECKSTYLE-131),a) 和 b) 都适用于 2.4 版本。

因此,除非您使用的是 Maven 3,否则我建议暂时回滚到 2.4:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-checkstyle-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <configLocation>checkstyle.xml</configLocation>
  </configuration>
</plugins>

或者

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-checkstyle-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation>
  </configuration>
</plugin>

附带说明一下,对于多模块构建,请查看Multimodule Configuration

于 2010-02-17T11:26:37.073 回答
6

我一直在尝试使用 Checkstyle 插件的 3.0.1 版本,发现configLocation没有效果。尝试了上面的方法,但仍然没有运气。

总而言之,上面的答案可能确实有效,但您可能需要设置一个 property checkstyle.config.location

用于-X获取调试输出,我看到:

[DEBUG]   (f) configLocation = config/sun_checks.xml

在日志中进一步向后滚动,看起来configLocation没有设置:

<configLocation default-value="config/sun_checks.xml">${checkstyle.config.location}</configLocation>

根据该消息,我在全局中设置属性<properties>如下:

<checkstyle.config.location>${basedir}/config/checkstyle-configuration.xml</checkstyle.config.location>

这有效,但导致插件抛出异常。经过一番谷歌搜索后,我在 checkstyle 配置文件中添加了以下内容:

<module name="Checker">
  ...
  <module name="TreeWalker">
    ...
    <property name="cacheFile" value=""/>

为了完整起见,最后一步来自以下 Jira,在 2.8 中标记为已解决。不同之处在于它似乎可以使用空值,从而无需设置${cachefile}属性:

http://jira.codehaus.org/browse/MCHECKSTYLE-159

于 2011-09-19T15:47:32.780 回答
2

可能对仍然需要找到解决方法的其他人有所帮助。顺便说一句,我遇到了同样的问题,并且假设要在 /classes/.xml 或此处的文件夹中搜索该文件。但是因为它直接在我包含的项目文件夹之后

<configuration>
<configLocation>src\main\resources\checkstyle-checker-dev.xml</configLocation>
</configuration>

注意:configLocation 有 L 大写字母

您也可以在环境中定义一个全局变量并在此处使用注意:这只是一种解决方法,它需要按照上述行中的说明工作。

于 2012-02-14T10:39:10.587 回答