15.2 丰富项目信息
在15.1节中可以看到,在默认情况下Maven生成的站点包含了很多项目信息链接,这其实是由一个名为maven-project-info-reports-plugin的插件生成的。在Maven 3中,该插件的配置内置在maven-site-plugin中,而在Maven 2中,该插件的配置内置在核心源码中。因此你不需要任何配置就能让Maven帮你生成项目信息。该插件会基于POM配置生成下列项目信息报告:
关于(about):项目描述。
持续集成(Continuous Integration):项目持续集成服务器信息。
依赖(Dependencies):项目依赖信息,包括传递性依赖、依赖图、依赖许可证以及依赖文件的大小、所包含的类数目等。
依赖收敛(Dependency Convergence):只针对多模块项目生成,提供一些依赖健康状况分析,如各模块使用的依赖版本是否一致、项目中是否有SNAPSHOT依赖。
依赖管理(Dependency Management):基于项目的依赖管理配置生成的报告。
问题追踪(Issue Tracking):项目的问题追踪系统信息。
邮件列表(Mailing Lists):项目的邮件列表信息。
插件管理(Plugin Management):项目所使用插件的列表。
项目许可证(Project License):项目许可证信息。
项目概述(Project Summary):项目概述包括坐标、名称、描述等。
项目团队(Project Team):项目团队信息。
源码仓库(Source Repository):项目的源码仓库信息。
上述有些项是根据项目已有的依赖和插件配置生成的。例如,依赖这一项就很有意思,除了依赖坐标、传递性依赖以及依赖图,可以使用maven-dependency-plugin生成的信息之外,报告还有依赖文件细节的信息,这里详细罗列了每个依赖文件的名称、大小、所包含文件数目、类数目、包数目和JDK版本等信息,如图15-2所示。
图 15-2 依赖文件细节报告
依赖相关的项是基于POM的dependencies和dependencyManagement元素生成的,类似地,其他项也都有其对应的POM元素。Maven不会凭空生成信息,只有用户在POM中提供了相关配置后,站点才有可能包含这些信息的报告。为了让站点包含完整的项目信息,需配置POM,如代码清单15-1所示。
代码清单15-1 包含完整项目信息的POM
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId>account-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Account Parent</name>
<url>http://mvnbook.juvenxu.com/</url>
<description>A project used to illustrate Mavenšs features.</description>
<scm>
<connection>scm:svn:http://svn.juvenxu.com/mvnboook/trunk</connection>
<developerConnection>scm:svn:https://svn.juvenxu.com/mvnboook/trunk
</developerConnection>
<url>http://svn.juvenxu.com/mvnboook/trunk</url>
</scm>
<ciManagement>
<system>Hudson</system>
<url>http://ci.juvenxu.com/mvnbook</url>
</ciManagement>
<developers>
<developer>
<id>juven</id>
<name>Juven Xu</name>
<email>juvenshun@gmail.com</email>
<timezone>8</timezone>
</developer>
</developers>
<issueManagement>
<system>JIRA</system>
<url>http://jira.juvenxu.com/mvnbook</url>
</issueManagement>
<licenses>
<license>
<name>Apache License,Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
</license>
</licenses>
……
</project>
代码清单15-1中使用scm元素为项目添加了源码仓库信息,使用ciManagement元素为项目添加了持续集成服务器信息,使用developers元素为项目添加了项目成员团队信息,使用issueManagement元素为项目添加了问题追踪系统信息,使用licenses元素为项目添加了许可证信息。这时再重新生成站点,相关信息就会体现在站点的项目信息报告中。图15-3就显示了一个典型的源码仓库信息报告。
图 15-3 项目源码仓库信息报告
类似的项目信息报告读者可以在很多的开源项目中看到,使用Maven站点来一致化开源项目的信息展现方式无疑为用户获取信息提供了便利。
有些时候,用户可能不需要生成某些项目信息项,例如你可能没有邮件列表或者不想在站点中公开源码仓库信息,这时可以配置maven-project-info-reports-plugin选择性地生成信息项,如代码清单15-2所示。
代码清单15-2 选择性地生成项目信息报告
<project>
……
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.1.2</version>
<reportSets>
<reportSet>
<reports>
<report>dependencies</report>
<report>project-team</report>
<report>issue-tracking</report>
<report>license</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
</project>
上述代码配置了maven-project-info-reports-plugin。需要注意的是,项目报告插件需要在reporting元素下的plugins元素下进行配置,下一节还将介绍其他项目报告插件,也都在这里进行配置。代码清单15-2中的配置使得站点的项目信息只包含依赖、团队、问题追踪系统和许可证几项信息,读者可以根据自己的实际情况选择要生成的项目信息。