2013-10-30 48 views
3

我想让maven-checkstyle-plugin对我们所有的项目使用相同的配置文件。如何外部化maven-checkstyle-plugin的checkstyle配置

我试过了几种方法,但其中没有一种是有效的。

,似乎工作的唯一的事情是,当我把配置文件在我的Maven的项目的根目录,然后使用该名称作为configLocation配置参数在pom.xml

   <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.10</version> 

       <configuration> 
        <configLocation>my-checkstyle-checker.xml</configLocation> 
       </configuration> 
      </plugin> 

我已经尝试指定一个绝对的磁盘路径,但似乎并不奏效。 (考虑到最终目标是让詹金斯做checkstyle,如果该文件将在jenkins服务器上的指定位置,这似乎是一个有效的选择)

我也尝试制作一个独立的jar文件,只包含xml然后将其用作依赖项。 (这也会将配置集中在1个位置并防止项目特定的偏差。)不幸的是,这也不起作用。

[错误]未能执行目标org.apache.maven.plugins:项目詹金斯的沙箱项目的CheckStyle(默认CLI):已发生的Checkstyle报告错误的maven-的CheckStyle-插件:2.10代。在checkstyle执行期间失败:无法在位置查找配置文件my-checkstyle-checker.xml:找不到资源'my-checkstyle-checker.xml'。 - > [Help 1]

有没有人能告诉我我在做什么错在这里?

它似乎只知道与maven命令启动位置相同的文件。

  • 的maven-的CheckStyle插件版本:2.10
  • Maven的命令:MVN的CheckStyle:CheckStyle的

回答

8

创建一个单独的Maven项目,只包含了Checkstyle的配置。在我来说,我将这个项目称为checkstyle-config,它包含以下内容:

checkstyle-config\src\main\resources\checkstyle.config.xml 
checkstyle-config\src\main\resources\checkstyle.suppressions.xml 
checkstyle-config\pom.xml 

该项目的POM文件很简单:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.totaalsoftware.incidentmanager</groupId> 
    <artifactId>checkstyle-config</artifactId> 
    <version>2.0.0-SNAPSHOT</version> 
</project> 

构建它,所以它被安装。然后使用它作为您的Checkstyle执行的相关性,如:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <executions> 
     <execution> 
     <goals> 
      <goal>check</goal> 
     </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
     <groupId>com.totaalsoftware.incidentmanager</groupId> 
     <artifactId>checkstyle-config</artifactId> 
     <version>2.0.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
    <configuration> 
     <configLocation>checkstyle.config.xml</configLocation> 
     <suppressionsLocation>checkstyle.suppressions.xml</suppressionsLocation> 

     ... other configuration ... 

    </configuration> 
    </plugin> 
+0

啊,你需要将jar添加作为一个依赖的插件,而不是你的项目,这或许可以解释它。我会试试看看它是否有效。 –

+0

现在只需要进行测试。有用。谢谢您的帮助。 –

0

我也有定义在我的插件配置中的位置有些问题,但能够通过覆盖该插件使用Maven的属性来得到这个工作, checkstyle.config.location。请参阅下面的示例,它适用于多模块maven项目,并且需要很少的开销。

<checkstyle.config.location>${project.parent.basedir}/my_checks.xml</checkstyle.config.location> 
0

我有类似的问题。我用下面的配置解决了它。

$ {project.basedir}/src/main/resources/checkstyle。XML

注:我的CheckStyle文件位于“的src/main /资源”