maven eclipse checkstyle插件

时间:2010-10-20 19:44:08

标签: eclipse maven-2 checkstyle

我有自定义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中使用相同的配置文件?我觉得应该有,但我只是错过了如何正确填充抑制滤波器。

感谢, 杰夫

4 个答案:

答案 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>