《Maven实战》是国内第一本公开出版的Maven专著。它内容新颖,基于最新发布的Maven3.0,不仅详尽讲解了Maven3.0的所有新功能和新特性,而且还将这些新功能和新特性与Maven2.x版本进行了对比,以便于正在使用Maven 2.x版本的用户能更好地理解。本书它内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装、配置和基本使用方法,以便于初学者参考;详细讲解了坐标和依赖、Maven仓库、生命周期和插件、聚合与继承等Maven的核心概念,建议所有读者仔细阅读;系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有选择性的阅读;扩展性地讲解了如何Maven和Archetype插件,这部分内容对需要编写插件扩展Maven或需要编写Archetype维护自己的项目骨架以更便于团队开发的读者来说尤为有帮助。它实战性强,不仅绝大部分知识点都有相应的案例,而且本书还在第4章设计了一个背景案例,后面的很多章节都是围绕这个案例展开的,可操作性极强。 本书适合所有Java程序员阅读,无论你是从未使用过Maven,亦或是已经使用Maven很长一段时间了,相信你都能从本书中获得有价值的参考。本书也适合所有项目经理阅读,它能帮助你更规范、更高效地管理Java项目。
相信maven1大家都已经很熟悉了,具体maven能做什么,就不详细说了。个人觉得maven在开源项目中用的还是比较多的,公司内部,就不太清楚了。我以前的公司用过一段时间,不过后来就没有下文了。与maven1 相比,maven2可算是几乎重写了,不过从速度来说应该更快。
Maven是构建Java应用的优秀管理工具,是Apache软件基金会的顶级项目。其具有开发目录构建和管理,统一管理第三方依赖,编译,测试,打包,发布等功能。最大的特点要数第三方依赖管理了,因为其它功能都能从Ant中找到踪影。以往每个项目独立管理依赖,使得每个项目打包后都是巨大无比的,而真正的程序文件却没有多少,Maven接管第三方依赖后,我们的应用就只有程序文件了,没有了jar包轻巧很多,而统一的管理,使得我们可以随意获取jar资源。初学者使用Maven总是感觉很难上手,其中也有一部分人是被Maven下载资源那疯狂的做法吓退的,这就是Maven的精巧之处。从Apache官方网站下载的Maven工具仅仅2M大小,其中是不包含我们要使用的依赖的,那么就要从网络中获取这些依赖,就是那个疯狂下载的过程。下面我们从头开始构建Maven环境,直到运行Jetty容器执行Web应用,这一切都很简单。
什么是pom? pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。
Maven是什么?Maven是针对Java开发项目、技术层面的项目管理工具,它提供了构建工具所提供功能的超集,除了构建功能之外,Maven还可以管理项目结构、管理依赖关系、生成报告、生成Web站点、有助于团队成员之间的交流与协作。<br>Maven不是MS-Project或Primavera-P3那样面向事务的项目管理工具。Maven是针对Java开发项目、技术层面的。<br>Maven不仅仅是一个像Ant那样的构建工具,也不仅仅是像Ivy那样的依赖管理工具。Maven提供构建与依赖管理功能的超集。<br>一个更正式的ApacheMaven的定义:Maven是一个项目管理工具,它包含了一个项目对象模型(ProjectObjectModel),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(DependencyManagementSystem),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
本文只是简单的对maven的操作步骤做一个指南性的说明,实际应用还有很多东西需要实践。
Maven2的最大特点是对第三方依赖库进行统一管理,只要使用了Maven2就可以让所有项目都是用统一管理的共享依赖库,每个项目不再需要自己包含jar包,原来每个项目至少都要几十M大小,现在省去了jar包,单个项目只需要几百k。非常适合网上开源项目的使用。Maven2其实只是一个构建工具,最主要的用途是通过几个简单的命令实现项目的编译,测试,打包,发布,还可以生成项目对应的站点以及报表。在更深的层次上,只要清楚如何善用插件,就可以为自己的项目生成各种分析报表。
与maven1 相比,maven2可算是几乎重写了,不过从速度来说应该更快。 主要的几个新特性包括:<br> 1. 更快、更简单速度方面可以比上ant了<br> 2.更少的配置文件:现在的配置文件只剩下了settings.xml和pom.xml了。<br> 3.Plugin语言更换:语言开始支持java,BeanShell和ant<br> 4.提供了预定义的模版:这点是最有帮助的,用户可以自己定义自己的项目模版了,就像用appfuse一样生成项目结构<br> 5.生命周期的引入:在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。<br> 6.新增Dependency Scope:这点也比较重要,有些用于test范围的包,可以不用加入依赖了<br> 7.传递依赖,简化依赖管理:这是最为方便的,可以省了很多配置。如a 依赖b,b依赖c 默认 a也会依赖 c。但是也会带来隐患,如版本冲突。不过maven也已经考虑到了,可以使用exclusions来排除相应的重复依赖。