如何在Maven中为所有模块使用单个checkstyle抑制文件

Sha*_*der 4 java maven-2 build maven-plugin

我有一个由几个Maven模块组成的项目,这些模块都是父模块的子模块.我让父设置使用checkstyle,子模块都正确地继承了这种行为.我希望所有子模块都使用其插件中定义的父抑制文件.我定义了checkstyle插件中使用的属性checkstyle.suppression

<properties>
  <checkstyle.suppressions>${basedir}\src\checkstyle\suppressions.xml</checkstyle.suppressions>
</properties>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <configLocation>config/sun_checks.xml</configLocation>
      <suppressionsLocation>${checkstyle.suppressions}</suppressionsLocation>
      <suppressionsFileExpression>${checkstyle.suppressions}</suppressionsFileExpression>
    </configuration>
  </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

这对于父母工作正常,但所有的子模块,试图找到他们的文件BASEDIR这有一定道理.
我确信必须有一个简单的解决方案,我缺少但是有没有办法定义这个位置,以便所有子模块将使用父位置而不进行硬编码?

Bri*_*Fox 11

上面的答案是危险的.我认为每个项目都应该是自包含的,因此引用它外部的文件迟早会破坏构建.Checkstyle可以获取文件的URL,但这意味着您无法离线构建.更好的方法是将文件打包(也可以添加pmd.xml)到jar中,然后将该jar添加到checkstyle(或pmd)插件的类路径中.我有它的一个例子在这里,更多的是overridding插件类路径这里