- 浏览: 791708 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (651)
- Java (39)
- Java 初学者小问题 (66)
- 设计模式 (7)
- 项目管理 (3)
- 数据库 (1)
- 算法 (2)
- Java practices (6)
- Effective Java2读书笔记 (78)
- Linux (2)
- programming ruby 读书笔记 (5)
- Core Java Ninth Edition Volume I 读书笔记 (15)
- Pro Git 读书笔记 (12)
- Git (3)
- Maven in Action 读书笔记 (20)
- Web (12)
- 非技术类书籍 (11)
- 电影 (40)
- Web Cache (1)
- jquery (0)
- 历史 (4)
- Dive Into HTML5 读书笔记 (13)
- 三国演义小学毕业考 (79)
- 高效能人士的7个习惯 读书笔记 (12)
- Java Performance 读书笔记 (3)
- Protocol Buffer 学习笔记 (6)
- Mongo DB 学习笔记 (7)
- Morphia 学习笔记 (7)
- Algorithms -- Princeton 学习笔记 (13)
- String研究 (10)
- Hadoop: The Definitive Guide 读书笔记 (3)
- Java与模式读书笔记 (5)
- Date研究 (3)
- The Roman Empire 听课笔记 (4)
- Algorithms -- Standford 学习笔记 (16)
- Core Java Ninth Edition Volume II 读书笔记 (9)
- Thinking in Java 4th Edition 读书笔记 (21)
- Node : Up and Running 学习笔记 (5)
- Eloquent Javascript (8)
- Smashing Node.js 读书笔记 (1)
- Algorithms II -- Standford 学习笔记 (19)
- Algorithm II -- Princeton 学习笔记 (14)
- 网络安全 (2)
- Javascript (4)
- 正则表达式 (1)
- JAVA 7/8 (15)
- JVM (10)
- NodeJS (1)
- 鸟哥的linux私房菜读书笔记 (14)
- Web Service (1)
- The art of programming (9)
- Introduction to Algorithm 读书笔记 (4)
- Java 源码阅读 (0)
- Spring in Action 读书笔记 (2)
- Java Network Programming 读书笔记 (2)
最新评论
-
心存高远:
谢谢作者分享,刚好看到这里不太明白,现在茅塞顿开。不过runt ...
关于 Maven的传递依赖的理解 -
sxlkk:
851228082 写道甚至在某次技术会议现场遇到《Maven ...
关于 Maven的传递依赖的理解 -
851228082:
851228082 写道a----compile----b-- ...
第五章 坐标和依赖 -
851228082:
a----compile----b-----provided- ...
第五章 坐标和依赖 -
851228082:
甚至在某次技术会议现场遇到《Maven in action》的 ...
关于 Maven的传递依赖的理解
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的传递依赖的理解
2012-09-30 09:50 13979今天又回顾了一下 《Maven in Action》的读书笔记 ... -
《Maven in Action》读后感
2012-02-23 23:48 2205今天终于读完了《Maven in Action》一书,真所谓书 ... -
第十八章 Archetype
2012-02-23 23:30 50691. Archetype 是 Maven ... -
第十七章 编写Maven插件
2012-02-23 19:42 44841. 编写 Maven 插件的主要步骤 ... -
第十六章 m2eclipse
2012-02-23 15:44 23721. m2eclipse ( http: ... -
第十四章 灵活的构建
2012-02-20 16:21 18661. 通过 <propertie ... -
第十三章 版本管理
2012-02-20 15:57 21141. 版本管理( Version Manage ... -
第十二章 使用Maven构建Web应用
2012-02-15 18:38 60371. Web 项目的 POM ... -
第十一章 使用Hudson进行持续集成
2012-02-09 17:09 23051. 持续集成就是快速 且高频率 ... -
第十章 使用Maven进行测试
2012-02-05 22:17 213951. com.google.code. ... -
第九章 使用Nexus创建私服
2011-12-06 23:17 107871. Nexus 分为开源版和企业版,开源 ... -
第八章 聚合与继承
2011-12-06 09:55 20391. 为了能用一条命令来构建一个实际 ... -
第七章 生命周期和插件
2011-12-05 13:36 22951. Maven 的生命周期就是为了对所有的构 ... -
第六章 仓库
2011-12-03 18:44 24011. Maven 在一个工作站上的某个位置统一 ... -
第五章 坐标和依赖
2011-12-03 15:14 20771. Maven 定义了这样一组规则:世界上任 ... -
第四章 背景案例
2011-12-02 21:20 14151. 主要场景: 1) 用户访问注册页面 2) ... -
第三章 Maven 使用入门
2011-12-01 18:40 25421. 就像Make的Makefile, Ant的build. ... -
第二章 Maven的安装和配置
2011-12-01 10:01 62271. 设置JAVA_HOME, Path中加入%JAVA_H ... -
第一章 Maven 简介
2011-12-01 09:48 22821. 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
第九章至第十二章可能涉及到透视图(Perspective)和工作区(Workspace)的管理,学习如何创建自定义透视图,调整工作区设置,以及与其他Eclipse功能如项目、资源等进行交互。 第十三章至第十六章可能会涉及插件的...
15. **第十五章:缓存机制** - Django 的缓存系统介绍。 - 不同类型的缓存存储选项。 - 缓存数据的管理策略。 16. **第十六章:集成的子框架 django.contrib** - Django 自带的子框架及其用途。 - 如何使用...
第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 易用性,性能、成本...
第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 易用性,性能、成本...
- **第15章:中间件** - 解释了Django的中间件机制及其用途。 - **第16章:与遗留数据库和应用程序集成** - 探讨了如何将Django与现有系统集成。 - **第17章:扩展Django的管理界面** - 指导如何根据特定需求定制...
第十三章:Kinect控制的Delta机器人 本书最后的项目将展示如何结合Arduino和Kinect控制一个Delta机器人,使其能够根据Kinect传感器捕捉到的运动来执行精确的操作。 书中还包括了关于作者、技术审阅者、致谢以及书签...
15. **第十五章:缓存机制** - **缓存原理**:讲解缓存的基本原理和作用。 - **缓存策略**:介绍Django中不同的缓存策略及其配置方法。 16. **第十六章:集成的子框架django.contrib** - **子框架概述**:概述...
QT5是QT库的第五个主要版本,是一个跨平台的应用程序开发框架,支持多种操作系统,包括Windows、Linux、macOS等。它提供了一整套工具和API,用于创建具有丰富用户界面的应用程序。QT5包含了各种组件,如按钮、文本框...
### 第十五章:缓存机制 - **缓存策略**:使用缓存提高应用性能,包括页面缓存、片段缓存等。 - **缓存后端**:支持多种缓存后端,如Memcached、Redis等。 ### 第十六章:集成的子框架Django.contrib - **子框架...
第1章信息架构要解决的问题 3 你好,iTunes 5 信息架构要解决的问题 8 信息过载 9 访问信息的更多方式 10 加入信息架构 12 由信息构成的场所 13 渠道之间的一致性 13 系统化思维 15 本章回顾 16 第2章信息架构的定义...
第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 易用性,性能、成本和安全性 ...
第15章 gdi+绘图 实例165 在图像中实现自定义标记 实例166 辉光效果的文字 实例167 渐变效果的文字 实例168 绘制多边形 实例169 简单画图程序 实例170 仿qq截图功能 实例171 模拟石英钟 实例172 绘制贝塞尔曲线 实例...
第1章 信息架构要解决的问题 3 你好,iTunes 5 信息架构要解决的问题 8 信息过载 9 访问信息的更多方式 10 加入信息架构 12 由信息构成的场所 13 渠道之间的一致性 13 系统化思维 15 本章回顾 16 第2章 ...
### 第十五章:缓存机制 - **缓存策略**:介绍了缓存的原理及应用场景,包括页面缓存、片段缓存等。 - **缓存后端**:讲解了如何配置不同的缓存后端,例如Memcached、Redis等。 ### 第十六章:集成的子框架django....