《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是一个功能丰富的仓库管理器,能让你更方便的管理项目构件。
英文版免费阅读及下载:http://www.sonatype.com/documentation/books
中文版免费阅读:http://www.sonatype.com/books/maven-book/reference_zh/public-book.html
中文版PDF下载:请点击
英文版购买:去Amazon
作者简介
本书是由Sonatype的成员编写的,作者有:Tim O’Brien, John Casey, Brian Fox, Bruce Snyder, 和Jason Van Zyl。
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月起开始翻译本书,频率为大约每月两章,到2009年7月基本完成。同时我还维护了一个Maven中文博客,更新翻译进程,提供Maven相关新闻,以及编写Maven相关技术文章。
博客中一些读者的评价:
Caixiaopig:
继续关注楼主的翻译,正是看到了楼主的文章,才决定试用maven。
nasvel:
对juven极力推广maven表示敬佩。工作中一直使用maven,深刻的体会它的便利。而且maven的插件(plugin)的开发相当简单,可以解 决项目中一些特定而重复性问题,don’t repeat yourself !
killvin:
前五章已经看完,作者的翻译水平是一流的,期待其他章节中。。。。!
phoenixup:
你用过Maven吗?凡是要拍Maven板砖,麻烦先认真使用一下Maven,至少说出个1,2,3来,从Maven2.0开始,我就用Maven替代了 Ant的大部分工作,Ant只做一下灵活的任务~~另外、这个东西就是一个项目管理工具。。。复杂在那里。。。
本书目录
前言
序
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规格说明非官方实现
关于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划分多模块,进行多模块的开发,但是我遇到一个问题 :
我在父pom.xml中配置了多模块。
web-security
web-join
模块依赖管理:
com.travelsky
web-security
war
${project.version}
但是我每个模块的版本通过${project.version}应用的都是父模块的版本号。我希望能够应用子模块pom.xml文件中各自的模块版本号。因为我们的模块会独立发布,各自更新版本。
期待你的解答。谢谢
@victorlin231.1 ,如果不指定,默认是继承子父模块的。
如果要子模块独立发布,就需要显式指定子模块的版本,如
非常感谢您做的工作!
不知作者知道阿里巴巴的antx不?借鉴了很多maven的原理,也是不错的
知道,不过他们好像正在转向maven
你好,我在使用mvn archetype:generate命令后,出现choose a number:82:,我直接回车后出现Choose version : 1:1.0 2: 1.0-alpha-1 3: 1.0-alpha-2……然后就又是choose a number了,我不管输入什么数字一直是这样,想向你请教一下我怎么才能建一个test的例子呢?谢谢。
@test
给出列表让你choose version,那你就输入个对应数字选择版本
对不起,因为出现choose version后就直接出现那些版本了,没法输入版本选择……
呵呵 很感谢你的劳动成果,俺也试着玩maven了
请问这个网站是不是不需要注册?
个人网站,不开放注册
非常感谢作者的工作,我想问一下,在翻译版中源码的链接为什么都不好用呢?或者那里有全部的源码呢?谢谢
啊,我也找不到了,官网改动很大……
请问下:
我想用maven 管理 js css 等公用文件
我应该建立什么样的maven项目(Packaging)
我 js css 要被 其它的项目所引用
简单的jar也可以吧,然后你依赖的时候,从classpath取就OK了,这个没有标准
maven从中央仓库下载jar文件和pom插件,如果公司禁止上互联网,咋下载相关的jar文件和pom插件文件?
刚接触maven 很感谢您提供那么多优秀的资源
感谢楼主啊
我也是差不多是2008年的时候就了解过maven,但后来就放下了,看到作者孜孜不倦的努力成果,俺真是泪奔啊。现在终于想用maven了。
@juvenxu 想问下具体是该怎么实现呢?
是本不错的书,推荐