最近,我撰写了一篇文章,讨论了Maven 2与WebLogic Portal的集成,我也发现使用Maven进行工作是非常有趣的事情。Maven 2有一项我频繁使用的出色特性,那就是自动为项目生成一个Web站点的能力。这个Web站点可包含多种生成的报告,其中包括项目信息文档、单元测试结果、javadoc等。
Maven中可用的报告之一就是Checkstyle报告,我希望利用它来确保遵从组织的编码标准。如果您不熟悉Checkstyle,它会解析您的源代码,并提供一份关于如何使代码遵从给定约定的报告。有关Checkstyle的更多信息,请访问 http://checkstyle.sourceforge.net。
Checkstyle附带一些默认约定,包括Sun编码标准,而大多数组织会加以定制,并创建自己的配置。因而就出现了这样一个问题:如何将此配置集中化,以便在完成一次项目构建时不必手动处理配置。
幸运的是,使用Maven内置的依赖项机制可轻松解决这个问题。实质上,我们只需将Checkstyle xml配置文件压缩为一个JAR,然后将其安装到一个Maven存储库中即可,通常应是组织的内部Intranet存储库。构建了项目站点后,将自动从存储库中获取此配置,并按需应用。
这样的配置非常简单,首先,在project pom.xml中,将 we define the dependency on the checkstyle配置JAR上的依赖项定义为一个扩展依赖项,方法如下:
<build><extensions><extension><groupId>com.bea.ps</groupId><artifactId>checkstyle-config</artifactId><version>1.0.0</version></extension></extensions>
</build>
接下来,在reporting部分的Checkstyle插件配置中引用配置。请注意,Checkstyle plugin将先在URL类路径中搜索资源,之后才会搜索文件系统,这就是可以将配置文件存储在JAR中的原因。下面引用的configLocation是checks.xml在上述checkstyle-config.jar中类路径内的位置。
<reporting><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-checkstyle-plugin</artifactId><configuration><configLocation>config/checks.xml</configLocation></configuration></plugin></plugins>
</reporting>
就是这样,现在就可以集中管理和控制配置了,项目还可以通过更新extension部分中的工件版本来获得最新版本。