《Maven权威指南》

August 27th, 2010 Leave a comment Go to comments

关于本书

本书是关于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是更明智的选择。

  1. victorlin23
    August 6th, 2010 at 17:23 | #1

    您好!我在使用maven划分多模块,进行多模块的开发,但是我遇到一个问题 :
    我在父pom.xml中配置了多模块。

    web-security
    web-join

    模块依赖管理:

    com.travelsky
    web-security
    war
    ${project.version}

    但是我每个模块的版本通过${project.version}应用的都是父模块的版本号。我希望能够应用子模块pom.xml文件中各自的模块版本号。因为我们的模块会独立发布,各自更新版本。

    期待你的解答。谢谢

  2. juvenxu
    August 6th, 2010 at 17:28 | #2

    @victorlin23
    如果要子模块独立发布,就需要显式指定子模块的版本,如1.1,如果不指定,默认是继承子父模块的。

  3. September 4th, 2010 at 09:56 | #3

    非常感谢您做的工作!

  4. October 12th, 2010 at 09:43 | #4

    不知作者知道阿里巴巴的antx不?借鉴了很多maven的原理,也是不错的

  5. juvenxu
    October 12th, 2010 at 11:18 | #5

    知道,不过他们好像正在转向maven

  6. test
    October 21st, 2010 at 16:46 | #6

    你好,我在使用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的例子呢?谢谢。

  7. juvenxu
    October 21st, 2010 at 16:58 | #7

    @test
    给出列表让你choose version,那你就输入个对应数字选择版本

  8. test
    October 22nd, 2010 at 09:03 | #8

    对不起,因为出现choose version后就直接出现那些版本了,没法输入版本选择……

  9. xubo
    November 2nd, 2010 at 10:33 | #9

    呵呵 很感谢你的劳动成果,俺也试着玩maven了

  10. 小雨
    November 5th, 2010 at 15:41 | #10

    请问这个网站是不是不需要注册?

  11. juvenxu
    November 5th, 2010 at 15:57 | #11

    个人网站,不开放注册 :)

  12. able
    December 22nd, 2010 at 23:23 | #12

    非常感谢作者的工作,我想问一下,在翻译版中源码的链接为什么都不好用呢?或者那里有全部的源码呢?谢谢

  13. juvenxu
    December 31st, 2010 at 16:31 | #13

    啊,我也找不到了,官网改动很大……

  14. hsj
    January 30th, 2011 at 11:23 | #14

    请问下:
    我想用maven 管理 js css 等公用文件
    我应该建立什么样的maven项目(Packaging)

  15. hsj
    January 30th, 2011 at 11:58 | #15

    我 js css 要被 其它的项目所引用

  16. juvenxu
    February 19th, 2011 at 00:52 | #16

    简单的jar也可以吧,然后你依赖的时候,从classpath取就OK了,这个没有标准

  17. hemingwei
    March 11th, 2011 at 17:07 | #17

    maven从中央仓库下载jar文件和pom插件,如果公司禁止上互联网,咋下载相关的jar文件和pom插件文件?

  18. l137ove
    July 8th, 2011 at 13:45 | #18

    刚接触maven 很感谢您提供那么多优秀的资源

  19. August 26th, 2011 at 11:28 | #19

    感谢楼主啊

  20. December 20th, 2011 at 17:26 | #20

    我也是差不多是2008年的时候就了解过maven,但后来就放下了,看到作者孜孜不倦的努力成果,俺真是泪奔啊。现在终于想用maven了。

  21. December 24th, 2011 at 14:57 | #21

    @juvenxu 想问下具体是该怎么实现呢?

  22. April 24th, 2012 at 14:52 | #22

    是本不错的书,推荐

  1. April 22nd, 2010 at 19:25 | #1
  2. October 10th, 2010 at 18:30 | #2
  3. November 11th, 2010 at 15:39 | #3
  4. November 11th, 2010 at 16:32 | #4
  5. May 4th, 2011 at 10:24 | #5
  6. July 27th, 2011 at 19:36 | #6
*