Maven使用笔记(三)Maven的工作原理
概述
Maven是一个项目管理工具,他包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统和用来运行定义生命周期阶段中插件目标的逻辑。
Maven是基于约定优于配置的思想来管理代码目录的。Maven的核心插件使用了一组通用的约定,以用来编译源代码,打包可分发的构件,生成Web站点,以及许多其他过程。约定的好处是使事情简单化。
默认约定
默认源码:${basedir}/src/main/java
资源文件:${basedir}/src/main/resources
测试代码:${basedir}/src/main/test
JAR文件存放在:${basedir}/target/classes
Maven有很多优点包括依赖管理和通过插件重用一般的构建逻辑,但是它成功的最核心的原因是他定义了构建软件的一般接口。
Maven的核心其实不做什么实际的的事情,除了解析一些XMl文档,管理生命周期与插件之外,他什么都不懂。Maven被设计成将主要的职责委派给一组Maven插件,这些常见可以影响Maven生命周期,提供对目标的访问。绝大多数Maven的动作发生于Maven插件的目标,如编译源代码,打包二进制代码,发布站点和其他构建任务。
Maven维护了一个项目的模型。这个基于每一个项目定义的模型实现了一下特征:
·依赖管理
由于项目是根据一个包含组织标识符,构建标识符和版本的唯一的坐标定义的。项目间可以使用这些坐标来声明依赖。
·远程仓库
可以通过定义在项目对象模型(POM)中的坐标来创建Maven构建的仓库。
·全局性构建逻辑重用
Maven插件被编写成和项目模型对象(POM)一起工作,他们没有被设计成操作某一个已知位置的特定文件(此点可与Ant对比)。一切都被抽象到模型中,插件配置和自定义行为都在模型中进行。
·工具可移植性/集成
Maven标准化了项目模型对象(POM)模式,可使用IDE很容易生成有模型生成项目文件。
·便于搜索和过滤构建
Maven的原理
Maven的基本原理很简单,采用远程仓库和本地仓库以及一个类似build.xml的pom.xml,将pom.xml中定义的jar文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的jar,同一个版本的jar只需下载一次,而且避免每个应用都去拷贝jar。如图1。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以maven下载很小,在执行maven任务时,才会自动下载需要的插件。

Maven有一个官方的仓库,是一个微内核,通过网络将需要的文件下载到本地,通过官方仓库将相应的类库进行统一管理。
Maven使用笔记(三)Maven的工作原理的更多相关文章
- MAVEN学习笔记之Maven生命周期和插件简介(3)
		MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ... 
- MAVEN学习笔记之Maven插件的应用(4)
		MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ... 
- Android View框架总结(三)View工作原理
		转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52180375 测量/布局/绘制顺序 如何引起View的测量/布局/绘制? Perfor ... 
- 【原创】Android View框架总结(三)View工作原理
		测量/布局/绘制顺序 如何引起View的测量/布局/绘制? PerformTraversales() ViewRoot View工作基本流程 MeasureSpec SpecMode Measure ... 
- Spring学习之旅(三)Spring工作原理初探
		详细的废话相信很多书籍视频资料都已经很多了,这里说几个小编个人认为对于理解Spring框架很重要的点.欢迎批评指正. 1)Spring的控制反转 先说说“依赖”,在面向对象程序设计中,类A中用到了类B ... 
- 笔记1:Jmeter工作原理及目录结构
		1.基本工作原理 发送request请求到服务器——获取目标服务的统计信息——生成不同格式的报告 2.完整的工作原理 Jmeter模拟用户并发进行性能测试——发送request到目标服务器——服务器返 ... 
- Maven学习笔记(三) :Maven使用入门
		编写POM: Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描写叙述项目怎样构建,声明项目依赖,等等. ... 
- Maven 学习笔记(三)
		Maven生命周期 在上次我们使用maven package 对项目进行打包.这里就是为其指定一个生命周期.生命周期是包含在一个项目构建中的一系列有序的阶段.Maven有许多不同的生命周期,比如验证( ... 
- maven学习笔记三(依赖特性,作用域)
		上一章中 我们看到了添加了个junit的依赖包.那么maven中想添加依赖的jar包我们只需要配置相应的dependency就行.例如: <dependency> <groupId ... 
- Maven学习笔记:Maven简介
		Maven的概念 Maven是基于项目对象模型(POM,Project Object Model),可以通过描述信息来管理项目的构建,报告和文档的软件管理工具 Maven除了以程序构建能力为特色之外, ... 
随机推荐
- Omnet++ 4.0 入门实例教程
			http://blog.sina.com.cn/s/blog_8a2bb17d01018npf.html 在网上找到的一个讲解omnet++的实例, 是4.0下面实现的. 我在4.2上试了试,可以用. ... 
- 【js】JSON.stringify 语法实例讲解
			语法: JSON.stringify(value [, replacer] [, space]) value:是必选字段.就是你输入的对象,比如数组,类等. replacer:这个是可选的.它又分为 ... 
- 禁止掉非法IP登陆服务器
			今天查看线上服务器日志/var/log/secure发现有很多国外的ip尝试登陆服务器,以前一直没太注意这方面,作为系统管理员真是失职啊,虽然服务器已经设置了强密码,但是看到有人想搞你还是很不爽的.一 ... 
- 锋利的jQuery-4--trigger()和triggerHandler()
			trigger()方法触发事件后,会执行浏览器默认操作. $("input").trigger("focus") 以上的代码不仅会执行input绑定的focus ... 
- TCP/IP协议栈概述
			TCP/IP协议栈概述 这篇文章虽然只是很粗浅的介绍了ISO/OSI 网络模型,但确实把握住了关键点,某种意义上,简单回顾一下就可以加深对TCP/IP协议栈的理解. 原作者:阮一峰 链接: http: ... 
- QQ  腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件
			QQ 编辑 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件.腾讯QQ支持在线聊天.视频通话.点对点断点续传文件.共享文件.网络硬盘.自定义面板.QQ邮箱等多种功 ... 
- explicit构造函数
			explicit构造函数 Explicit Constructors(显式构造函数)收藏 按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面 ... 
- motto7
			与其羡慕别人,还不如模仿别人的过程. 
- linux在所有文件中查找某一个字符
			# find <directory> -type f -name "*.c" | xargs grep "<strings>" < ... 
- 转 Xenserver HVM is required for this operation的解决办法
			今天在XenServer中安装虚拟机时出现如下错误: 原因:没有开启XenServer服务器主机的虚拟化支持功能 解决办法:在XenServer主机的BIOS里开启CPU的虚拟化支持功能 本文出自 “ ... 
