我有自定义checkstyle检查文件(称为checks.xml),我正在尝试在maven和eclipse中使用相同的文件。除了SuppressionFilter
。
在这个checks.xml文件中,我有
<module name="SuppressionFilter">
<property name="file" value="src/main/resources/checkstyle/checkstyle-suppressions.xml"/>
</module>
当我在maven中运行时,这是有效的。但是,当我运行eclipse时,我需要将配置更改为
<module name="SuppressionFilter">
<property name="file" value="${basedir}/src/main/resources/checkstyle/checkstyle-suppressions.xml"/>
</module>
如果我使用带有maven的$ {basedir}属性运行,我会收到错误,即属性$ {basedir}尚未设置。
有没有办法在maven和eclipse中使用相同的配置文件?我觉得应该有,但我只是错过了如何正确填充抑制滤波器。
感谢, 杰夫
答案 0 :(得分:5)
当然有一种方法可以在maven和eclipse中使用相同的配置文件,但它需要先进行一些设置。我写了一篇关于如何实现这一目标的博客文章,即使对于多模块maven项目也是如此。见:maven-checkstyle-and-eclipse
答案 1 :(得分:4)
这是地狱。 Eclipse和Maven处理不同的抑制,不共享变量。 源自Rolf Engelhard
所以在pom.xml中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.8</version>
<configuration>
<propertyExpansion>config_loc=${basedir}/src/main/checkstyle</propertyExpansion>
<configLocation>${basedir}/src/main/checkstyle/checkstyle.xml</configLocation>
<suppressionsLocation>${basedir}/src/main/checkstyle/suppressions.xml</suppressionsLocation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
现在在checkstyle.xml中($ {config_log}是一个特定于Eclipse的东西,但是通过在pom中指定它我们也可以将其提供给maven):
<module name="SuppressionFilter">
<property name="file" value="${config_loc}/suppressions.xml" />
</module>
如果您正在使用maven-site-plugin
或任何其他依赖CheckStyle的插件,请不要忘记更新那些也具有config_loc属性(或者将其声明为全局到pom,尽管我不是'能够让它正常工作)。
答案 2 :(得分:1)
<propertyExpansion>basedir=${session.executionRootDirectory}</propertyExpansion>
适用于我,但仅限于添加到<plugin>
节点,而不是<execution>
!
project.basedir
在多模块项目中效果不佳,因为它会指向子模块文件夹而不是根文件夹。
答案 3 :(得分:-2)
您可以尝试将${basedir}
定义为您的pom中的属性
请参阅pom reference quick overview。
<property>
<name>basedir</name>
<value>${project.basedir}</value>
</property>