`
leonzhx
  • 浏览: 791708 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

第十五章 生成项目站点

阅读更多

1.   Maven 社区提供了大量插件,能让用户生成各种各样的项目审查报告,包括测试覆盖率、静态代码分析、代码变更等。 Maven Site Plugin 可以让用户生成项目的 Maven 站点,以展示这些报告。

 

 

2.  站点 生成的逻辑是 Maven 2 核心的一部分,但鉴于灵活性和可扩展性考虑, Maven 3 已经从核心中移除这部分逻辑。所以 Maven 2 应该使用最新的 2.x 版本的 maven-site-plugin ,而 Maven 3 应该使用最新的 3.x 版本的 maven-site-plugin

 

3.   site 生命周期中 pre-site post-site 默认没有绑定任何插件目标。 site 绑定了 maven-site-plugin site 目标,该目标负责生成项目站点。 site-deploy 绑定了 maven-site-plugin deploy 目标,该目标负责将站点部署至远程服务器。

 

4.   使用 mvn site 可以在项目的 target/site 目录下生成站点文件。但多模块的站点页面上子模块的链接无法跳转到子模块项目页面,这是由于多模块 Maven 项目本身的目录结构导致的。可以使用 mvn site:stage –DstagingDirectory=D:\tmp 将站点预发布到某个本地临时目录下。

 

5.   项目站点包含了很多项目信息链接,这其实是由 maven-project-info-reports-plugin 的插件生成的。 Maven 3 中,该插件的配置是在 maven-site-plugin 中的,而在 Maven 2 中,该插件的配置内置在核心源码中,因此不需要任何配置就能帮你生成项目信息。

 

6.   maven-project-info-reports-plugin 会基于 POM 配置生成以下项目信息:

  1) 关于 (about) :项目描述( <description> 元素)

  2) 持续集成 (Continuous Integration) :项目持续集成服务器信息( <ciManagement> 元素)

  3) 依赖 (Dependencies) :项目依赖信息

  4) 依赖收敛 (Dependency Convergence) :只针对多模块项目生成,提供一些依赖健康状况分析,如各模块使用的依赖版本是否一致、项目中是否有 SNAPSHOT 依赖

  5) 依赖管理 (Dependency Management) :基于 <dependencyManagement> 配置生成报告。

  6) 问题追踪 (Issue Tracking) :项目的问题追踪系统信息。( <issueManagement> 元素)

  7) 邮件列表 (Mailing Lists) :项目的邮件列表信息

  8) 插件管理 (Plugin Management) :项目所使用插件的列表

  9) 项目许可证 (Project License) :项目许可证信息( <licenses> 元素)

  10) 项目概述 (Project Summary) :项目概述包括坐标、名称、描述等

  11) 项目团队 (Project Team) :项目团队信息( <developers> 元素)

  12) 源码仓库 (Source Repository) :项目的源码仓库信息( <scm> 元素)

 

7.   可以配置 maven-project-info-reports-plugin 选择性地生成项目信息项:

<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 2 项目报告插件的配置是在 <reporting> 元素下的 <plugins> 元素中,但对 Maven 3 ,报告插件配置应该在 Maven Site Plugin 的插件配置 <configuration> 元素下的 <reportPlugins> 元素中。具体可以参考

 

http://maven.apache.org/plugins/maven-site-plugin/maven-3.html

 

8.   maven-javadoc-plugin 使用 JDK javadoc 工具生成项目主源码和测试源码的 JavaDocs 文档,在 <reporting> 元素中 (Maven 2) maven-site-plugin <configuration> 元素中 (Maven 3) 配置该插件,会在生成站点的左边导航栏的 Project Reports 下生成 JavaDocs Test JavaDocs 链接。该插件的最新版本能在聚合项目的站点中得到所有模块的 JavaDocs

 

9.   <reporting> 元素中 (Maven 2) maven-site-plugin <configuration> 元素中 (Maven 3) 配置 maven-jxr-plugin(Maven Source Xref) 插件,能够在站点导航栏下的 Project Reports 下生成 Source Xref 链接,以 Web 页面形式在 Maven 站点展示 Java 源代码。若想在聚合模块整合所有源码,需要对该插件添加如下配置:

<configuration><aggregate>true</aggregate></configuration>

 

10.  C heckStyle 能根据一套规则自动检查 Java 代码是否符合编码规范。在 <reporting> 元素中 (Maven 2) maven-site-plugin <configuration> 元素中 (Maven 3) 配置 maven-checkstyle-plugin 插件,能够在站点导航栏下的 Project Reports 下生成 Checkstyle 链接,来展示 CheckStyle 报告。可以添加如下配置选择编码规范:

<configuration><configLocation>config/maven_checks.xml</configLocation></configuration>
 

CheckStyle 内置了四种规则:

 

  1)  c onfig/sun_checks.xml Sun 定义的编码规范 ( 默认值 )

  2)   config/maven_checks.xml Maven 定义的编码规范

  3)   config/turbine_checks.xml Turbine 定义的编码规范

  4)   config/avalon_checks.xml Avalon 定义的编码规范

maven-checkstyle-plugin 其实是从 ClassPath 中载入规则文件,用户可以在资源目录下(默认为 src/main/resources )定义一个自己的规则文件 checkstyle/my_checks.xml 。再在 <configLocation> 元素中配置该文件。

关于规则文件的具体定义,可以参考 http://checkstyle.sourceforge.net/

 

11.   maven-checkstyle-plugin 还不支持从聚合项目的报告中得到所有模块的 CheckStyle 报告。但我们可以用如下方法配置一个所有模块共享的规则文件:

  1)   定义一个 CheckStyle 规则文件模块 com.juvenxu.mvnbook:checkstyle:1.0 。在资源目录下定义一个自己的规则文件 checkstyle/my_checks.xml

  2)   在聚合模块配置 maven-checkstyle-plugin 依赖该模块:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <version>2.5</version>
      <dependencies>
        <dependency>
          <groupId>com.juvenxu.mvnbook</groupId>
          <artifactId>checkstyle</artifactId>
          <version>1.0</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>
 

这样 checkstyle/my_checks.xml 就始终在 maven-checkstyle-plugin ClassPath 中了。

 

 

  3)   <reporting> 元素中 (Maven 2) maven-site-plugin <configuration> 元素中 (Maven 3) 配置 maven-checkstyle-plugin 插件使用 checkstyle/my_checks.xml 规则文件。

 

12.   PMD 可以分析 Java 源代码,寻找代码中的问题,包括潜在的 bug 、无用的代码、可优化的代码、重复代码以及过于复杂的表达式等。具体可以访问 http://pmd.sourceforge.net/

 

13.   配置了 maven-pmd-plugin 报告生成插件后(配置方法同上),可以在站点导航栏中生成 PMD Report 链接显示分析结果以及 CPD Report 链接显示代码拷贝粘贴的分析结果。 PMD 包含了大量的规则(参见 http://pmd.sourceforge.net/rules/index.html ),默认会使用 rulesets/basic.xml rulesets/unusedcode.xml rulesets/importss.xml. 要使用其他规则可以在插件的 <configuration> 元素下配置 :

<rulesets>

  <ruleset>rulesets/braces.xml</ruleset>

  <ruleset>rulesets/naming.xml</ruleset>

  <ruleset>rulesets/strings.xml</ruleset>

</rulesets>
 

在插件的 <configuration> 元素下配置:

 

<aggregate>true</aggregate>

可以支持聚合报告。

 

14.   maven-changelog-plugin 能够基于版本控制系统生成三分变更报告:

  1) Change Log :基于提交的变更报告,包括每次提交的日期、文件、作者、注释等。

  2)D eveloper Activity :基于作者的变更报告,包括作者列表以及每个作者相关的提交次数和涉及文件数目。

  3) File Activity :基于文件夹的变更报告,包括变更的文件列表及每个文件的变更次数。

默认可以生成最近 30 天的变更记录,可以配置:

<configuration>

  <type>range</type>

  <range>60</range>

</configuration>

 改变变更记录的天数。

 

 

15.   cobertura-maven-plugin 可以在站点中生成测试覆盖率报告,但不支持聚合报告。

 

16.   用户可以在 src/site 目录下定义一个 site.xml 的站点描述符文件来自定义站点外观。该文件由 XML Schema 约束定义,相关 xsd 文件位于:

http://maven.apache.org/xsd/decoration-1.0.0.xsd

描述符文件以 <project> 元素为根,可以定义:

1 <bannerLeft> <bannerRight> 站点头部左右两边的图片 (<src> 元素 ) 和连接地址( <href> 元素),站点的全用的本地 web 资源必须位于 src/site/resources 目录下

2 <version> 项目版本号, position 属性定义了版本号显示的位置, none left( 头部左边 ) right (头部右边)、 navigation-top navigation-bottom bottom

3 )< publishDate> 项目最近发布时间,其显示位置配置同上。

4 可以定义站点的面包屑导航:

<body>

    <breadcrumbs>

      <item name=”Maven” href=”http://maven.apache.org” />

      <item name=”Juven Xu” href=”http://www.juvenxu.com” />

    </breadcrumbs>

</body> 
 

5 <skin> 可以定义站点使用的皮肤插件。 Maven 定义了三种皮肤插件:

  a maven-classic-skin

  b maven-default-skin (默认的皮肤)

  c maven-stylus-skin

  groupId 都是 org.apache.maven.skins 。另外在 GoogleCode 上托管了 com.googlecode.fluido-skin:fluido-skin 插件非常清爽简洁。( http://code.google.com/p/fluido-skin/

    6 可以定义站点左边的导航栏:

 

<body>
     <menu name=”${project.name}”>
        <item name=”Introduction” href=”introduction.html”/>
        <item name=”Usage” href=”usage.html” />
        <item name=”FAQ” href=”faq.html”/>
      </menu>
      <menu ref=”reports”/>
</body> 
 

Ref 中引用的是 Maven 站点默认生成的页面。 Report 表示引用项目报告菜单, parent 表示包含父模块链接的菜单, modules 表示包含所有子模块链接的菜单。

 

17.   可以在 src/site/apt/ 目录下创建 site APT 文档( Almost Plain Text ,参见 http://maven.apache.org/doxia/references/apt-format.html ),或在 src/site/apt 目录下创建 site FML 文档( FAQ Markup Language ,参见 http://maven.apache.org/doxia/references/fml-format.html )。

 

18.   可以配置如下属性,让 Maven 用指定编码读取源码及文档以及呈现站点的 html 文档。

 

<properties>

  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

</properties> 

   可以为 maven-site-plugin 配置

 

<configuration><locales>zh_CN</locales>

来设置用什么语言呈现站点。

 

19.   POM 中配置站点服务器信息:

 

<distributionManagment>

  <site>

    <id>app-site</id>

    <url>dav:https://www.juvenxu.com/sites/app</url>

  </site>

</distributionManagement> 
 

同样可以在 settings.xml <servers> 元素中配置站点服务器的用户名和密码。

Maven 支持 FTP SCP DAV 协议部署站点。对 FTP 需要在 <build> 元素下配置 FTP 扩展组件:

 

<extensions>

  <extension>

    <groupId>org.apache.maven.wagon</gorupId>

    <artifactId>wagon-ftp</artifactId>

    <version>1.0-beta-6</version>

  </extension>

</extensions> 
 

SCP 协议是通过密钥进行认证的,需要在 settings.xml 中配置认证信息:

 

<server>

  <id>app-site</id>

  <passphrase>password</passphrase>

  <privateKey>C:/sshkeys/id_rsa</privateKey>

</server> 
 

privateKey 表示私钥地址, passphrase 表示私钥口令。

可以用 mvn clean site-deploy 发布站点。

分享到:
评论

相关推荐

    Maven实战(高清版)

    第1章 maven简介1.1 何为maven1.1.1 何为构建1.1.2 maven是优秀的构建工具1.1.3 maven不仅仅是构建工具1.2 为什么...灵活的构建第15章 生成项目站点第16章 m2eclipse第17章 编写maven插件第18章 archetype

    Eclipse插件开发学习笔记-源代码1至24章.zip

    第九章至第十二章可能涉及到透视图(Perspective)和工作区(Workspace)的管理,学习如何创建自定义透视图,调整工作区设置,以及与其他Eclipse功能如项目、资源等进行交互。 第十三章至第十六章可能会涉及插件的...

    Django book 2.0 中文版

    15. **第十五章:缓存机制** - Django 的缓存系统介绍。 - 不同类型的缓存存储选项。 - 缓存数据的管理策略。 16. **第十六章:集成的子框架 django.contrib** - Django 自带的子框架及其用途。 - 如何使用...

    PHP和MySQL Web开发第4版pdf以及源码

    第15章 电子商务的安全问题 15.1 信息的重要程度 15.2 安全威胁 15.2.1 机密数据的泄露 15.2.2 数据丢失和数据破坏 15.2.3 数据修改 15.2.4 拒绝服务 15.2.5 软件错误 15.2.6 否认 15.3 易用性,性能、成本...

    PHP和MySQL Web开发第4版

    第15章 电子商务的安全问题 15.1 信息的重要程度 15.2 安全威胁 15.2.1 机密数据的泄露 15.2.2 数据丢失和数据破坏 15.2.3 数据修改 15.2.4 拒绝服务 15.2.5 软件错误 15.2.6 否认 15.3 易用性,性能、成本...

    Django book pdf 完整版

    - **第15章:中间件** - 解释了Django的中间件机制及其用途。 - **第16章:与遗留数据库和应用程序集成** - 探讨了如何将Django与现有系统集成。 - **第17章:扩展Django的管理界面** - 指导如何根据特定需求定制...

    Apress.Arduino.and.Kinect.Projects.Apr.2012

    第十三章:Kinect控制的Delta机器人 本书最后的项目将展示如何结合Arduino和Kinect控制一个Delta机器人,使其能够根据Kinect传感器捕捉到的运动来执行精确的操作。 书中还包括了关于作者、技术审阅者、致谢以及书签...

    DjangoBook2.0中文版

    15. **第十五章:缓存机制** - **缓存原理**:讲解缓存的基本原理和作用。 - **缓存策略**:介绍Django中不同的缓存策略及其配置方法。 16. **第十六章:集成的子框架django.contrib** - **子框架概述**:概述...

    基于QT5实现的上海市地铁换乘指南,数据结构

    QT5是QT库的第五个主要版本,是一个跨平台的应用程序开发框架,支持多种操作系统,包括Windows、Linux、macOS等。它提供了一整套工具和API,用于创建具有丰富用户界面的应用程序。QT5包含了各种组件,如按钮、文本框...

    Django book2中文版

    ### 第十五章:缓存机制 - **缓存策略**:使用缓存提高应用性能,包括页面缓存、片段缓存等。 - **缓存后端**:支持多种缓存后端,如Memcached、Redis等。 ### 第十六章:集成的子框架Django.contrib - **子框架...

    信息架构 超越Web设计(第4版).pdf

    第1章信息架构要解决的问题 3 你好,iTunes 5 信息架构要解决的问题 8 信息过载 9 访问信息的更多方式 10 加入信息架构 12 由信息构成的场所 13 渠道之间的一致性 13 系统化思维 15 本章回顾 16 第2章信息架构的定义...

    PHP和MySQL WEB开发(第4版)

    第15章 电子商务的安全问题 15.1 信息的重要程度 15.2 安全威胁 15.2.1 机密数据的泄露 15.2.2 数据丢失和数据破坏 15.2.3 数据修改 15.2.4 拒绝服务 15.2.5 软件错误 15.2.6 否认 15.3 易用性,性能、成本和安全性 ...

    明日科技C#开发入门及项目实战

    第15章 gdi+绘图 实例165 在图像中实现自定义标记 实例166 辉光效果的文字 实例167 渐变效果的文字 实例168 绘制多边形 实例169 简单画图程序 实例170 仿qq截图功能 实例171 模拟石英钟 实例172 绘制贝塞尔曲线 实例...

    信息架构:超越Web设计(第4版)(全彩).[美]Louis Rosenfeld(带详细书签) PDF 下载 高清 完整版

    第1章 信息架构要解决的问题 3 你好,iTunes 5 信息架构要解决的问题 8 信息过载 9 访问信息的更多方式 10 加入信息架构 12 由信息构成的场所 13 渠道之间的一致性 13 系统化思维 15 本章回顾 16 第2章 ...

    The Django Book 2.0中文译本

    ### 第十五章:缓存机制 - **缓存策略**:介绍了缓存的原理及应用场景,包括页面缓存、片段缓存等。 - **缓存后端**:讲解了如何配置不同的缓存后端,例如Memcached、Redis等。 ### 第十六章:集成的子框架django....

Global site tag (gtag.js) - Google Analytics