【问题标题】:Maven 2 checkstyle plugin version 2.5 - Problem with configLocationMaven 2 checkstyle 插件版本 2.5 - configLocation 问题
【发布时间】:2010-02-17 10:23:12
【问题描述】:

我在 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.xml'。

任何帮助将不胜感激!

【问题讨论】:

    标签: maven-2 checkstyle


    【解决方案1】:

    我在 2.5 版插件(如 MCHECKSTYLE-129MCHECKSTYLE-131)中看到了与 Jira 中的 configLocation 相关的几个问题,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

    【讨论】:

    • 切换回 2.4 版确实解决了问题 a),但问题 b) 无法解决。我按照 MCHECKSTYLE-129 中给出的说明解决了问题 b)。所以我有带有 plexus-resources 1.0-alpha-7-SNAPSHOT 的 checkstyle 插件版本 2.5,一切正常。谢谢帕斯卡!
    • @Nils Weird,我用你的 URL 测试了 b),它在 2.4 中对我有用。无论如何,如果您通过添加 plexus-resources 依赖项使用 2.5 解决它,那很好:)
    【解决方案2】:

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

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

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

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

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

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

    根据该消息,我在全局 &lt;properties&gt; 中设置属性如下:

    <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

    【讨论】:

    • 必须把“file://”放在前面。 file://${basedir}/config/checkstyle-configuration.xml
    【解决方案3】:

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

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

    注意:configLocation 有 L 个大写字母

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-17
      • 2011-04-28
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多