`
juvenshun
  • 浏览: 1588674 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Maven权威指南

阅读更多

2010/04 /29更新 :我已经在个人网站提供了PDF下载 http://www.juvenxu.com/mvn-def-guide/

 

《Maven权威指南》介绍

关于Maven
----------------
Maven这个单词来自于意第绪语,意味知识的积累,最早在Jakata Turbine项目中它开始被用来视图简化构建过程。当时有很多项目,它们的Ant build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven的官方站点是:http://maven.apache.org/

Maven和Ant
----------------
Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码,哪里放置输出。随着时间的推移,非正式的约定出现了,但是它们还没有在产品中模式化。
Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。
Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。
Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把字节码放到 target/classes ,然后在 target 生成一个 JAR 文件。
Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。这些都是Ant的弱项。
当然,Ant的强大在于它的灵活性,但是,随着项目规模的增大,使用Maven是更明智的选择。

关于本书
----------------
本书是关于Maven最权威最全面的材料,它清晰了解释了Maven这个工具如何给你的软件开发项目带来秩序。作者都拥有丰富的经验,其中包括Maven的创始人Jason Van Zyl。
由于Maven在不断发展,本书也只是一个开始,你应该把它看成是第1版。本书的主要目的还是给Maven开发者提供支持。
本书一开始介绍了Maven是什么,以及在各个环境下安装运行Maven。之后的内容分为两个部分:第一部分为Maven实战,沿用了Maven:A Developer's Notebook(该书覆盖的是Maven1的内容,目前绝大多数用户都在使用Maven2)的风格,通过一个个生动实际的例子,循序渐进的阐释了Maven的用法和核心概念,这些例子从最简单的命令行程序,到Web应用,到多模块项目,直至多模块企业级项目。第二部分为Maven参考,当你渐渐熟悉Maven,并且遇到问题需要解决的时候,这些参考就是最权威和详细的材料了,通过它们,你能了解Maven的高级特性,更深刻的理解Maven系统如何工作。参考覆盖的内容包括项目对象模型,构建生命周期,Profile,站点生成,编写插件等等。值得一提的是,该部分还详细介绍了m2eclipse和Nexus,m2eclipse是强大的在Eclipse中集成Maven的插件,Nexus是一个功能丰富的仓库管理器,能让你更方便的管理项目构件。
本书提供英文版在线的浏览及PDF下载: http://www.sonatype.com/book 。在这里你下载到样例源代码,也可以提出你的意见和建议。

作者简介
----------------
本书是由Sonatype的成员编写的,作者有:Tim O'Brien (Sonatype, Inc.) , John Casey (Sonatype, Inc.) , Brian Fox (Sonatype, Inc.) , Bruce Snyder () , Jason Van Zyl (Sonatype, Inc.)
Jason Van Zyl
Sonatype的创始人和CTO,Sonatype是Java开发基础设置的领导者,它的客户包括Intuit,eBay,Qualcomm和eTrade。Jason拥有多于10年的开源及私人企业软件开发经验。在Sonatype之前,Jason是Periapt, Inc.的创始人,这是一个为财富500强公司如丰田,美国银行,和可口可乐提供软件基础设置开发服务的公司。作为一个开源热衷者,Jason是Apache Maven项目的创始人之一,以及Plexus Ioc框架的创始人,Apache Velocity项目的创始人。Jason目前主持着Apache Maven项目管理委员会。它已经参与Apache软件基金会达7年之久,帮助建立了Codehaus,一个备受尊重的开源社区项目孵化设置。他还是很多主流软件会议的常见发言人,如JavaOne,EclipseCon,EmergingTech,和ApacheCon。
Tim O'Brien
专业的作家,程序员,歌手,居住并工作于芝加哥区域。最早在一台TRS-80上开始了解编程,之后去弗吉尼亚大学学习电子工程(之后不久就忘光了)。Tim积极参与开源项目,活动于Jakatra Commons。在此之前他著有Harnessing Hibernate, Maven: A Developer's Notebook 以及 Jakarta Commons Cookbook 。

翻译介绍
----------------
本书从2008年07月起开始陆续翻译成中文版,频率为大约每月两章,中文版的在线浏览地址为:http://www.sonatype.com/book/reference_zh/public-book.html。此外,译者Juven Xu同时维护了一个Maven中文博客,更新翻译进程,提供Maven相关新闻,以及编写Maven相关技术文章:http://juvenshun.iteye.com/。
Juven Xu
南京大学软件学院毕业,兴趣方向为Java,敏捷开发。有较丰富的使用Maven管理项目的经验。
博客中一些读者的评价:
- 继续关注楼主的翻译,正是看到了楼主的文章,才决定试用maven。 —— Caixiaopig
- 对juven极力推广maven表示敬佩。工作中一直使用maven,深刻的体会它的便利。而且maven的插件(plugin)的开发相当简单,可以解决项目中一些特定而重复性问题,don't repeat yourself ! —— nasvel
- 前五章已经看完,作者的翻译水平是一流的,期待其他章节中。。。。! —— killvin
- 你用过Maven吗?凡是要拍Maven板砖,麻烦先认真使用一下Maven,至少说出个1,2,3来,从Maven2.0开始,我就用Maven替代了Ant的大部分工作,Ant只做一下灵活的任务~~另外、这个东西就是一个项目管理工具。。。复杂在那里。。。 —— phoenixup

本书目录
----------------
前言

1. 介绍Apache Maven
2. 安装和运行Maven
I. Maven实战
  3. 一个简单的Maven项目
  4. 定制一个Maven项目
  5. 一个简单的Web应用
  6. 一个多模块项目
  7. 多模块企业级项目
  8. 优化和重构POM
II. Maven参考
  9. 项目对象模型
  10. 构建生命周期
  11. 构建Profile
  12. Maven装配器
  13. 属性和资源过滤
  14. Maven和Eclipse: m2eclipse
  15. 站点生成
  16. 仓库管理器
  17. 编写插件
  18. 使用其它语言编写插件
附录A. Settings细节
服务B. Sun规格说明非官方实现

 

英文版在线阅读:http://books.sonatype.com/maven-book/reference/public-book.html

中文版在线阅读:http://books.sonatype.com/maven-book/reference_zh/public-book.html

 

翻译进度:http://groups.google.com/group/maven-zh/web/maven

翻译勘误:http://groups.google.com/group/maven-zh/web/maven-2

 

附件是目前已完成章节的PDF。

50
1
分享到:
评论
43 楼 linux1689 2010-10-25  
楼主撰写的《Maven实战》将与11月初出版,敬请关注。
42 楼 airlink 2009-12-25  
第81页, “但与Maven没有直接关系的而技术”, 中间多了一个“而”字,请注意去掉。:)
41 楼 juvenshun 2009-09-03  
code4high 写道
the flowing chapter "11.5. Tips and Tricks " said:
profile can be actived by property which can be dereferenced within the POM by ${name}.

it is not true, actually, profile only can be actived by system property "environment".

so, the whole Tips is a mistake, and it's not work, hope to fix it

thanks, and you can create a ticket here: https://issues.sonatype.org/browse/MVNDEF
40 楼 code4high 2009-09-03  
the flowing chapter "11.5. Tips and Tricks " said:
profile can be actived by property which can be dereferenced within the POM by ${name}.

it is not true, actually, profile only can be actived by system property "environment".

so, the whole Tips is a mistake, and it's not work, hope to fix it
39 楼 juvenshun 2009-07-06  
EdgenHuang 写道
什么时候能将所有章节的PDF共享出来呢,很期待的!

出来了,(注意以前不是不共享,是没有解决中文字体问题),看我最新的博客吧
38 楼 EdgenHuang 2009-06-23  
什么时候能将所有章节的PDF共享出来呢,很期待的!
37 楼 hantsy 2009-05-29  
编译失败。。。
     [java] XLink to nonexistent id: customizing
     [java] ERROR: xref linking to customizing has no generated link text.
     [java] Error: no ID for constraint linkend: customizing.
     [java] XLink to nonexistent id: customizing
     [java] ERROR: xref linking to customizing has no generated link text.
     [java] Error: no ID for constraint linkend: customizing.
     [java] XLink to nonexistent id: customizing
     [java] ERROR: xref linking to customizing has no generated link text.
     [java] Error: no ID for constraint linkend: customizing.
     [java] XLink to nonexistent id: customizing
     [java] Don't know what gentext to create for xref to: "programlisting"
     [java] Don't know what gentext to create for xref to: "programlisting"
     [java] Don't know what gentext to create for xref to: "programlisting"
     [java] Don't know what gentext to create for xref to: "programlisting"
     [java] Don't know what gentext to create for xref to: "programlisting"
     [java] Don't know what gentext to create for xref to: "programlisting"
     [java] ERROR: xref linking to section-test-scope has no generated link text.
     [java] Error: no ID for constraint linkend: section-test-scope.
     [java] XLink to nonexistent id: section-test-scope
     [java] ERROR: xref linking to sect-plugins-lifecycle has no generated link text.
     [java] Error: no ID for constraint linkend: sect-plugins-lifecycle.
     [java] XLink to nonexistent id: sect-plugins-lifecycle
     [java] (document [system-id file:/home/hantsy/Projects/dbktools/mavenguide/build/pdf/mavenguide-xep.fo]
     [java]   (validate
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise1a': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise1b': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise1c': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise2a': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise2b': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise2c': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise2d': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise4a': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise4b': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise4c': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise5a': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise5b': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise5c': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise6a': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise6b': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise6c': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise7a': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise7b': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='enterprise7c': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='pom1': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='pom2': no correspondent 'rx:end-index-range' found.
     [java]     [error] Unmatched 'rx:begin-index-range' element with id='pom3a': no correspondent 'rx:end-index-range' found.
     [java]     [validation total: 22 errors]
36 楼 hantsy 2009-05-29  
我试图用我的工具进行编译,发现很xml parser 分析很多id 找不到,不知道是怎么回事,是否翻译的时候,跨越了不同版本。
35 楼 hantsy 2009-05-29  
juvenshun 写道

hantsy 写道现在书已经至0.5,而中文版本还是0.16...差别很大了。hantsy 写道juvenshun 写道hantsy 写道HTML生成的pdf,没有目录结构。原书应该使用的是docbook,生成的pdf很漂亮。为什么不使用docbook呢?另外文档会加密了,而英文版本的没有。这是临时的,docbook转PDF,由于中文字体的问题,目前还存在问题未解决,当然那是最好的方式了 为防止有人利用该书获益(实际上已经有人这么做了),因此加密。现在作者已经将书开放了。。。可以获得源代码了。是的,任何人都可以贡献,比如说帮助解决PDF编码的问题。

这个应该不难。。。
应该只是一个配置的问题。。。我解决过jboss maven docbook 的问题。。。
http://blog.chinaunix.net/u/1096/showart_1836722.html
而这个用的是另一个maven artifact。
34 楼 juvenshun 2009-05-28  
hantsy 写道

现在书已经至0.5,而中文版本还是0.16...差别很大了。

hantsy 写道

juvenshun 写道hantsy 写道HTML生成的pdf,没有目录结构。原书应该使用的是docbook,生成的pdf很漂亮。为什么不使用docbook呢?另外文档会加密了,而英文版本的没有。这是临时的,docbook转PDF,由于中文字体的问题,目前还存在问题未解决,当然那是最好的方式了 为防止有人利用该书获益(实际上已经有人这么做了),因此加密。现在作者已经将书开放了。。。可以获得源代码了。

是的,任何人都可以贡献,比如说帮助解决PDF编码的问题。
33 楼 juvenshun 2009-05-28  
hantsy 写道

现在书已经至0.5,而中文版本还是0.16...差别很大了。

精力有限,待全部翻译完毕之后,再进行更新。
32 楼 hantsy 2009-05-28  

现在书已经至0.5,而中文版本还是0.16...差别很大了。
31 楼 hantsy 2009-05-28  
juvenshun 写道

hantsy 写道HTML生成的pdf,没有目录结构。原书应该使用的是docbook,生成的pdf很漂亮。为什么不使用docbook呢?另外文档会加密了,而英文版本的没有。这是临时的,docbook转PDF,由于中文字体的问题,目前还存在问题未解决,当然那是最好的方式了 为防止有人利用该书获益(实际上已经有人这么做了),因此加密。

现在作者已经将书开放了。。。
可以获得源代码了。
30 楼 magibt 2009-05-23  
正在看,翻译的不错。辛苦了
29 楼 juvenshun 2009-03-12  
gdq108409778 写道

为什么我在$HOME/.m2/settings.xml文件中设置的个人信息不能被${maven.home}/conf/settings.xml中的变量所替换

请加入http://groups.google.com/group/maven-zh,并附上你的两个settings.xml,以便我们帮助你解答。 QQ:55170521 也可以
28 楼 gdq108409778 2009-03-12  
为什么我在$HOME/.m2/settings.xml文件中设置的个人信息不能被${maven.home}/conf/settings.xml中的变量所替换
27 楼 citysettingsun 2009-03-06  
楼主翻译的相当不错,内行啊
26 楼 leedo 2009-02-20  
引用



    * maven-definitive-guide-zh.zip (4.1 MB)
    * 下载次数: 1215



晕,刚看到
25 楼 leedo 2009-02-20  
有没有pdf版本的,下载回来好好研究
24 楼 X.D.Hua 2009-02-12  
相当不错,重新认识了Maven

相关推荐

Global site tag (gtag.js) - Google Analytics