我在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'。
任何帮助将不胜感激!
答案 0 :(得分:6)
我在Jira中看到了与configLocation
相关的几个与插件版本2.5相关的问题(如MCHECKSTYLE-129或MCHECKSTYLE-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。
答案 1 :(得分:6)
我一直在尝试使用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>
根据该消息,我在全局<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}
属性:
答案 2 :(得分:1)
对于仍需要找到解决方法的其他人可能会有所帮助。 顺便说一句,我遇到了同样的问题,并且假设要在/classes/.xml或文件夹中搜索文件。但是因为它正在直接查看我包含的项目文件夹
<configuration>
<configLocation>src\main\resources\checkstyle-checker-dev.xml</configLocation>
</configuration>
注意:configLocation有L个大写
您也可以在环境中定义全局变量并在此处使用 注意:这只是一种解决方法,需要按照上面的说明进行操作。