概述

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有一个官方的仓库,是一个微内核,通过网络将需要的文件下载到本地,通过官方仓库将相应的类库进行统一管理。

最新文章

  1. Java开发代码性能优化总结
  2. iOS 收起键盘的几种方式
  3. [转载] Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
  4. C++@命名空间(转)
  5. 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么
  6. powershell学习
  7. 存储和读取MYSQL时间戳
  8. C++一些注意点之转换操作符
  9. ES6模板字面量
  10. XML系列之--Linq操作带属性的XML(四)
  11. 网络小白之WAN与LAN的区别
  12. 探索Visual Studio生成的.vs文件夹内部结构和作用
  13. 关于return的分号自动插入问题
  14. springboot 格式化返回日期
  15. BZOJ 2069: [POI2004]ZAW(Dijkstra + 二进制拆分)
  16. JavaScript FormData的详细介绍及使用
  17. CentOS7下查看系统环境(内存CPU磁盘使用率)
  18. 安装 scrapy 报错 error: Microsoft Visual C++ 14.0 is required
  19. numpy 广播
  20. alias with parameter,linux

热门文章

  1. map 几种遍历方法
  2. javaweb学习总结(三十)——EL函数库
  3. Ward BRDF实现心得
  4. Center os FTP配置
  5. LDA(Linear discriminate analysis)线性判别分析
  6. Matlab图像处理入门
  7. Win 7 下制作 mac 系统启动U盘
  8. 技术分享:WIFI钓鱼的入门姿势
  9. Nmap备忘单:从探索到漏洞利用(Part 5)
  10. 关于C语言的printf输出问题