最近在看
<<Maven权威指南>>
<script type="math/tex" id="MathJax-Element-463"><
></script>,权且用这篇博客做一次笔记。
1.定义
在Apache Maven的定义中,Maven是一个项目管理工具,它包含了意向项目对象模型(project object model),一组标准集合,一个项目生命周期(project lifecycle),一个依赖管理系统(dependency managenment system),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标的逻辑。当你使用maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享(或自定义)的插件。
2.理念
约定由于配置是一个简单的概念,即认为系统、类库、框架应该假定合理的默认值,而非要求提供不必要的配置。而在Maven则是这个概念的支持者,在默认情况下,它假定源代码存放在
${basedir}/src/main/java,资源文件假定是在
${basedir}/src/main/resources,测试代码假定在
${basedir}/src/test,编译好的字节码假定存放在
${basedir}/target/classes,并且在${basedir}/target创建一个可分发的JAR文件。当然,Maven的很多默认行为还是可配置的,例如项目源码的资源文件的位置可以被自定义,Jar文件的名字可以被自定义。
3.功能
Maven的核心其实不做什么实际的事情,除了解析一些XML文档,管理生命生命周期和插件外,它什么都不懂。Maven被设计成将主要的职责委派给一组Maven插件,这些插件可以影响Maven生命周期,提供对目标的访问。绝大多数的Maven的动作发生于Maven插件的目标,如编译源码,打包二进制代码,发布站点和其他构件任务。Maven大部分的智能是由插件实现的,而插件从Maven仓库获得。事实上,第一次你用全新的Maven安装运行注入Maven install命令时,它会从中央Maven仓库下载大部分核心Maven插件,这不仅仅是最小化Maven分发包大小的技巧,还能让你升级插件以给你项目的构建提高能力。
4.项目概念模型
Maven维护了一个项目模型,不仅仅需要把源码编译成字节码,还需要开发软件项目的描述信息,为项目指定一组唯一的坐标。项目概念模型实现了如下特征:
4.1依赖管理
4.2远程仓库
4.3全局性构建逻辑重用
4.4工具可移植性/集成
4.5便于搜索和过滤构建
5.Maven VS Ant
Maven不仅仅能够简化构建管理任务,它也帮助鼓励开发人员的软件项目使用通用接口。Maven可以在构建中集成Ant构建脚本,它不仅仅是一个工具,更是一个平台,我们不能仅仅把Maven考虑成Ant的另一个选择,因为”Maven”包含了很多构建工具以外的东西。
有一个核心观点使得有关Maven和Ant,Maven和Builder,Maven和Grandle的争论变得无关紧要,即Maven并不是完全根据你构建系统的机制来定义的,它不是为你构建的不同任务编写脚本,它提倡一组标注,一个一般的接口,一个生命周期,一个标准的仓库格式,一个标准的目录布局,等等。当然它也不在意POM的格式正好是XML、YAML或Ruby。
待续……..
Maven入门
最新推荐文章于 2024-09-09 09:29:40 发布