一、Maven简介

Maven是apache下的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。主要包括:

  • 项目对象模型(Project Object Model) : POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。。
  • 依赖管理系统(基础核心) : maven通过坐标对项目工程所依赖的jar包统一规范管理。
  • maven定义一套项目生命周期 : 清理、初始化、编译、测试、报告 、打包、部署、站点生成
  • 一组标准集合 : maven工程有自己标准的工程目录结构、定义坐标有标准。
  • maven 管理项目生命周期过程都是基于插件完成的

它负责管理项目开发过程中的几乎所有的东西:

  • 版本 : maven有自己的版本定义和规则
  • 构建 : maven支持许多种的应用程序类型,对于每一种支持的应用程序类型都定义好了一组构建规则和工具集。
  • 输出物管理 : maven可以管理项目构建的产物,并将其加入到用户库中。这个功能可以用于项目组和其他部门之间的交付行为。
  • 依赖关系 : maven对依赖关系的特性进行细致的分析和划分,避免开发过程中的依赖混乱和相互污染行为
  • 文档和构建结果 : maven的site命令支持各种文档信息的发布,包括构建过程的各种输出,javadoc,产品文档等。
  • 项目关系 : 一个大型的项目通常有几个小项目或者模块组成,用maven可以很方便地管理
  • 移植性管理 : maven可以针对不同的开发场景,输出不同种类的输出结果。

二、Maven仓库

Maven仓库分为中央仓库、本地仓库以及私服库:

2.1 中央仓库

中央仓库就是远程仓库,仓库中jar由专业团队(maven团队)统一维护。

中央仓库的地址:http://repo1.maven.org/maven2/

2.2 本地仓库

相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(电脑上的某个文件夹)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。

2.3 私服

在公司内部架设一台私服,其它公司架设一台仓库,对外公开。

三、Maven生命周期

Maven有三套相互独立的生命周期,分别是:clean、default、site。clean主要是清理项目、default是Maven最核心的的构建项目、site是生成项目站点。每一个大的生命周期又分为很多个阶段。后面的阶段依赖于前面的阶段,这点有点像Ant的构建依赖。生命周期本身相互独立,用户可以仅仅调用生命周期的某一个阶段,也就是说用户调用了default周期的任何阶段,并不会触发clean周期以及site周期的任何事情。三大生命周期蕴含着小小的阶段,我们按顺序看一下:

3.1 clean周期:

  • pre-clean:准备清理
  • clean:真正的清理工作
  • post-clean:执行清理后的一些后续工作

3.2 default周期:

  • validate:验证
  • initialize:初始化配置
  • generate-sources:生成源代码编译目录
  • process-sources:处理项目主资源文件,复制资源文件到outputclasspath
  • generate-resources:生成资源目录
  • process-resources:处理资源文件
  • complie:编译源代码
  • process-classes:处理编译后文件
  • generate-test-sources:生成测试目录
  • process-test-sources:处理项目测试资源文件,复制测试资源文件到outputclasspath
  • generate-test-resources:生成测试资源文件
  • process-test-resources:处理测试资源文件
  • test-compile:编译测试代码
  • process-test-classes:处理测试代码
  • test:单元测试运行测试代码
  • prepare-package:打包前的准备
  • package:将编译好的代码打包成为jar或者war或者ear等等
  • pre-integration-test:准备整体测试
  • integration-test:整体测试
  • post-integration-test:为整体测试收尾
  • verify:验证
  • install:安装到本地Maven库
  • deploy:将最终包部署到远程Maven仓库

3.3 site周期:

  • pre-site:准备生成站点
  • site:生成站点及文档
  • post-site:站点收尾
  • site-deploy:将生成的站点发布到服务器上

四、Maven聚合

随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构、分模块开发,来提高代码的清晰和重用。针对于这一特性,maven也给予了相应的配置。

我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可以独立的编译和测试运行每个模块,但是随着项目的不断变大和复杂化,我们期望能够使用简单的操作来完成编译等工作,这时Maven给出了聚合的配置方式。

所谓聚合,顾名思义,就是把多个模块或项目聚合到一起,我们可以建立一个专门负责聚合工作的Maven 工程。建立该project的时候,我们要注意以下几点:

  • 聚合模块本身也做为一个Maven项目,它必须有自己的POM
  • 它的打包方式必须为:pom
  • 引入了新的元素:modules---module
  • 版本:聚合模块的版本和被聚合模块版本一致
  • 相对目录:每个module的值都是一个当前POM的相对目录
  • 目录名称:为了方便的快速定位内容,模块所处的目录应当与其artifactId一致(Maven约定而不是硬性要求),总之,模块所处的目录必须和<module>模块所处的目录</module>相一致
  • 习惯约定:为了方便构建,通常将聚合模块放在项目目录层的最顶层,其它聚合模块作为子目录存在。这样当我们打开项目的时候,第一个看到的就是聚合模块的POM
  • 聚合模块减少的内容:聚合模块的内容仅仅是一个pom.xml文件,它不包含src/main/Java、src/test/java等目录,因为它只是用来帮助其它模块构建的工具,本身并没有实质的内容。
  • 聚合模块和子模块的目录:他们可以是父子类,也可以是平行结构,当然如果使用平行结构,那么聚合模块的POM也需要做出相应的更改。

五、Maven继承

我们在项目开发的过程中,可能多个模块独立开发,但是多个模块可能依赖相同的元素,比如说每个模块都需要Junit,使用spring的时候,其核心jar也必须都被引入,在编译的时候,maven-compiler-plugin插件也要被引入。这时我们采用继承,就不用在每个子模块分别定义了。
如何配置继承:

  • 说到继承肯定是一个父子结构,那么我们在父工程中来创建一个parent project
  • <packaging>: 作为父模块的pom,其打包类型也必须为pom
  • 结构:父模块只是为了帮助我们消除重复,所以它也不需要src/main/java、src/test/java等目录
  • 新的元素:<parent> , 它是被用在子模块中的
  • <parent>元素的属性:<relativePath>: 表示父模块POM的相对路径,在构建的时候,Maven会先根据relativePath检查父POM,如果找不到,再从本地仓库查找
  • relativePath的默认值: ../pom.xml
  • 子模块省略groupId和version: 使用了继承的子模块中可以不声明groupId和version, 子模块将隐式的继承父模块的这两个元素

Maven --- 简介相关推荐

  1. Maven 学习 (0) Maven 简介

    2019独角兽企业重金招聘Python工程师标准>>> Maven 学习 (0) Maven 简介 什么是 Maven? Apache Maven 是一个软件项目的管理和理解工具.M ...

  2. Maven学习(一)---Maven简介

    一.Maven简介 1.Maven是什么 Maven是Apache旗下的项目管理工具,它有Java语言开发,可以帮助我们更方便的管理和构建Java项目. 2.Maven怎么读? ['meɪvən] - ...

  3. Maven简介、下载、安装、配置以及使用

    - Maven简介 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. Maven 除了以java程序构建能力为特色之外,还提供高级项目管理工具. ...

  4. 【转载】Maven简介

    你是否早已厌倦了日复一日的手工构建工作,你是否对各个项目风格迥异的构建系统感到恐惧?Maven这个Java社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统.不仅 ...

  5. Maven简介(三)——profile介绍

    Maven简介(三)--profile介绍 博客分类: maven mavenprofile激活active  4       profile介绍 4.1     profile简介 profile可 ...

  6. 【项目管理和构建】——Maven简介(一)

    转载自:http://blog.csdn.net/gebitan505/article/details/46233741 在现实的企业中,以低成本.高效率.高质量的完成项目,不仅仅需要技术大牛,企业更 ...

  7. MAVEN简介之——settings.xml

    概述 Maven的settings.xml配置了Maven执行的方式,像pom.xml一样,但是它是一个通用的配置, 不能绑定到任何特殊的项目.它通常包括本地仓库地址,远程仓库服务,认证信息等. se ...

  8. Maven系列(一):Maven简介

    2019独角兽企业重金招聘Python工程师标准>>> Maven是什么? Maven在Apache官网的解释为:Maven是基于项目对象模型(POM即Project Object ...

  9. Maven学习(一) --------- Maven 简介

    目录 一.软件工程 概述 传统项目开发存在的问题 二.Maven 概述 Maven 优点 构建过程 三.Maven 核心概念 四.安装 Maven 环境 Maven 官网 : http://maven ...

最新文章

  1. css 选择器 伪元素_CSS伪元素-解释选择器之前和之后
  2. 对计算属性中get和set的理解
  3. hibernate Disabling contextual LOB creation as connection was null
  4. [Linux]CRC校验
  5. Windows EC2 Instance 忘记密码如何重置
  6. WPF应用基础篇---TreeView
  7. 部分iPhone13 系统有bug
  8. winform的label内容居中_C# Winform label自定义大小与居中实现教程
  9. 分解例题_2020年中考数学考点之利用平方差公式进行因式分解习题练习
  10. SpringBoot四大核心组件,你了解多少
  11. 超实用的开源项目—如何将WiFi密码转成二维码进行共享
  12. python可以用于工业机器人编程与操作_非常实用的工业机器人编程语言有哪些?这些编程好用吗?...
  13. 鸿合一体机触屏没反应怎么办_一体机屏幕触摸不准的原因以及解决方法
  14. 数论 —— 逆元与同余式定理
  15. Wikidata知识图谱介绍与数据处理
  16. Golang 计算MD5值
  17. 微信小程序--map组件视图无法更新的问题
  18. 转载:国学与古代文学的关系
  19. 计算机打印机设备管理器在哪里,打印机驱动在电脑哪里
  20. K-means最优K值计算(利用SSE)

热门文章

  1. Linux input子系统上报键值失败问题
  2. Centos7 glibc库升级到2.23(实测可行)
  3. 优化ESD防护的PCB设计准则
  4. echarts 柱状图,分别给每个柱子设置不同的颜色
  5. 学大伟业 Day 3 培训总结
  6. dell电脑如何安装ubuntu系统_Dell台式机安装Ubuntu 16.04注意事项( Alienware R6)
  7. 首届中国移动互联网直播行业峰会在京召开
  8. 青海电大随学随考计算机,[青海电大]17秋随学随考心理学作业4题目
  9. 【sdx62】XBL设置共享内存变量,然后内核层获取变量实现
  10. 量子算法入门资料个人小结