我正在运行Maven 3.0.5并且我正在尝试使用maven checkstyle插件,但我无法让它正确解析我的配置文件。在我的POM的报告部分,我有
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.10</version>
<configuration>
<propertyExpansion>suppressions.file=${basedir}/suppressions.xml</propertyExpansion>
<configLocation>file:///${basedir}/../buildTools/checkstyle/checkstyle-5.0-checks.xml</configLocation>
</configuration>
</plugin>
在我的checkstyle.xml文件中,我将抑制过滤器定义为
<module name="SuppressionFilter">
<!-- <property name="file" value="${checkstyle.suppressions.file}"/>
-->
<property name="file" value="${suppressions.file}"/>
</module>
当我运行checkstyle:checkstyle目标时,我收到一个错误,即没有定义suppressions.file。我可以让它在Eclipse或ant下运行但是当我尝试将它与maven一起使用时,我无法获得要设置的属性。我还尝试使用checkstyle.suppressions.file值并使用propertyExpansion标记或suppressionsFile标记进行设置。
有没有办法从Maven中做到这一点。我正在寻找的最终结果是能够在Eclipse,Ant和Maven中使用相同的规则文件。这将是我要指出的常见文件。同时,我希望能够在每个单独的项目中放置一个suppressions.xml文件,以允许项目控制抑制过滤器。
答案 0 :(得分:1)
首先我建议不要像configLocation
那样使用绝对文件名。更好的解决方案是使用一个包含相应配置文件的工件,比如有一个单独的项目让我们称之为:checkstyle,可以进行版本化等。
checkstyle
|-- src
| `-- main
| `-- resources
| |-- checkstyle.xml
| `-- LICENSE.TXT
`-- pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.checkstyle</groupId>
<artifactId>checkstyle</artifactId>
<version>1.0</version>
<name>checkstyle configuration</name>
</project>
制作mvn install
后,您可以使用如下配置:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>whatever-project</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>My Project </name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.10</version>
<dependencies>
<dependency>
<groupId>com.example.checkstyle</groupId>
<artifactId>checkstyle</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.10</version>
<configuration>
<configLocation>checkstyle.xml</configLocation>
<headerLocation>LICENSE.txt</headerLocation>
</configuration>
</plugin>
</plugins>
</reporting>
答案 1 :(得分:0)
好的,我是通过关注某个网站开始的,该网站声明如果您在报告部分添加配置,它将由构建插件部分选中。这不起作用。通过为检查添加jar文件的依赖项,我仍然需要做更多的工作。我发现的是我必须指定抑制文件,即使我在检查文件中定义了它。我还必须使用指向内部抑制文件的propertyExpansion传递变量(我想要这个,不必另外指定抑制文件)。我现在有我的构建插件节
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.10</version>
<configuration>
<propertyExpansion>suppressions.file=${basedir}/suppressions.xml</propertyExpansion>
<configLocation>file:///${basedir}/../buildTools/checkstyle/checkstyle-5.0-checks.xml</configLocation>
<suppressionsFile>${basedir}/suppressions.xml</suppressionsFile>
</configuration>
</plugin>