转自 https://www.cnblogs.com/xdp-gacl/p/4051819.html

一、Maven坐标

1.1、什么是坐标?

  在平面几何中坐标(x,y)可以标识平面中唯一的一点。

1.2、Maven坐标主要组成

  • groupId:组织标识(包名)
  • artifactId:项目名称
  • version:项目的当前版本
  • packaging:项目的打包方式,最为常见的jar和war两种

样例:

  

  

1.3、Maven为什么使用坐标?

  • Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范。
  • 拥有了统一规范,就可以把查找工作交给机器。

二、依赖管理

2.1、依赖配置

  依赖配置主要包含如下元素:

    <!--添加依赖配置--><dependencies><!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency><!--项目要使用到Hello的jar包,所以在这里添加Hello的jar包的依赖--><dependency><groupId>me.gacl.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope></dependency>    </dependencies>

2.2、依赖范围

  依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
    1.compile 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
    2.test:测试依赖范围。只对于测试classpath有效
    3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
    4.runtime:运行时提供。例如:jdbc驱动

2.3、传递性依赖

  MakeFriends.jar直接依赖于HelloFriends.jar,而HelloFriends.jar又直接依赖于Hello.jar,那么MakeFriends.jar也依赖于Hello.jar,这就是传递性依赖,只不过这种依赖是间接依赖,如下图所示:

  

2.4、可选依赖

三、仓库管理

3.1、Maven仓库

  用来统一存储所有Maven共享构建的位置就是仓库

3.2、Maven仓库布局

  根据Maven坐标定义每个构建在仓库中唯一存储路径,大致为:groupId/artifactId/version/artifactId-version.packaging

3.3、仓库的分类

3.3.1、本地仓库

  每个用户只有一个本地仓库,默认是在~/.m2/repository/,~代表的是用户目录

3.3.2、远程仓库

  1、中央仓库:Maven默认的远程仓库,URL地址:http://search.maven.org/

  

  2、私服:是一种特殊的远程仓库,它是架设在局域网内的仓库

  

四、生命周期

4.1、何为生命周期?

  Maven生命周期就是为了对所有的构建过程进行抽象和统一,包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤

4.2、Maven三大生命周期

  Maven有三套相互独立的生命周期,请注意这里说的是"三套",而且"相互独立",这三套生命周期分别是:

  1. Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  2. Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
  3. Site Lifecycle 生成项目报告,站点,发布站点。

  再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。 
  clean生命周期每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段。有Clean生命周期,也有clean阶段。Clean生命周期一共包含了三个阶段:

  1. pre-clean 执行一些需要在clean之前完成的工作
  2. clean 移除所有上一次构建生成的文件
  3. post-clean 执行一些需要在clean之后立刻完成的工作

  "mvn clean" 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,"mvn clean"等同于 mvn pre-clean clean ,如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。 
  Site生命周期pre-site 执行一些需要在生成站点文档之前完成的工作

  1. site 生成项目的站点文档
  2. post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  3. site-deploy 将生成的站点文档部署到特定的服务器上

  这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。
  Default生命周期Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里,只解释一些比较重要和常用的阶段:

  • validate
  • generate-sources
  • process-sources
  • generate-resources
  • process-resources 复制并处理资源文件,至目标目录,准备打包。
  • compile 编译项目的源代码。
  • process-classes
  • generate-test-sources
  • process-test-sources
  • generate-test-resources
  • process-test-resources 复制并处理资源文件,至目标测试目录。
  • test-compile 编译测试源代码。
  • process-test-classes
  • test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
  • prepare-package
  • package 接受编译好的代码,打包成可发布的格式,如 JAR 。
  • pre-integration-test
  • integration-test
  • post-integration-test
  • verify
  • install 将包安装至本地仓库,以让其它项目依赖。
  • deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

  运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。此外,Maven的插件机制是完全依赖Maven的生命周期的,因此理解生命周期至关重要。

五、Maven插件

  1. Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。
  2. 每个插件都能实现多个功能,每个功能就是一个插件目标。
  3. Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务,例如compile就是插件maven-compiler-plugin的一个插件目标。

转载于:https://www.cnblogs.com/blazeZzz/p/9284508.html

Maven核心概念(转)相关推荐

  1. Maven学习总结(四)——Maven核心概念

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(四)--Maven核心概念 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平 ...

  2. Maven学习(三)————Maven核心概念(二)

    引言 承接上一篇<Maven学习(二)----Maven核心概念(一)>,介绍 Maven  生命周期.插件.目标.继承.聚合等一些概念. 一.Maven 生命周期 1.1 理解 Mave ...

  3. Maven——Maven核心概念——史上最烂系列

    Maven 是目前最流行的自动化构建工具,对于生产环境下多框架.多模块整合开发有重要作用.Maven 是一款在大型项目开发过程中不可或缺的重要工具.(自己粗略写了一个SSM项目之后,回顾头来看这个,会 ...

  4. maven 公用仓库_Maven系列(二):Maven 核心概念

    一.仓库 1.1 Maven 仓库 仓库是一个位置(place),可以存储所有的工程 jar 文件.library jar 文 件.插件或任何其他的工程指定的文件. 严格意义上说,Maven 只有两种 ...

  5. Maven学习(二)————Maven核心概念(一)

    引言 Maven 作为项目构建工具,学习成本并不大,但是如果搞不懂它的一些核心概念,使用起来还是不能特别得心应手. Maven的核心概念包括以下这些: 1.约定的目录结构  2.POM  3.坐标  ...

  6. 快速了解Maven核心概念和工程实践

    介绍 Maven 是项目管理和构建工具. 说完是不是还是不知道Maven 做什么的? 项目管理和构建听着比较虚, 举个栗子,我们alpha 电商项目中,分为订单.商品.商家.用户和营销模块,订单模块需 ...

  7. Maven学习总结(4)——Maven核心概念

    一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成

  8. 理解 maven 的核心概念

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 本文以类图的方式,介绍 maven 核心的 12 个概念及相互之间的关系. Table of Con ...

  9. Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置

    两年半前写的关于Maven的介绍,现在看来都还是不错的,自己转下.写博客的一大好处就是方便自己以后查阅,自己总结的总是最靠谱的. 由浅入深,主要介绍maven的用途.核心概念(Pom.Reposito ...

最新文章

  1. python表白源代码-python浪漫表白源码
  2. php ip访问mysql什么配置_PHP与MYSQL配合完成IP的存取
  3. git命令:修改已经commit的注释
  4. 使用python下载文件的简单示例_Python
  5. Redis八种数据类型及应用场景介绍
  6. 软件包安装命令rpm和yum详解
  7. 【Caffe安装】ImportError: No module named caffe 的解决方案
  8. NS和DNS的区别有哪些?
  9. c语言 字符串逆序存放,(原创)字符串逆序输出
  10. 什么是云计算?云计算概念集合
  11. 主题:北京亿阳信通Oracle笔试题
  12. 推荐几款优秀的开源博客系统
  13. 通过Fildder下载百度音乐里的收费歌曲
  14. linux如何上传数据到百度网盘,Linux命令行上传文件到百度网盘
  15. Linux性能分析命令
  16. 数字加千分位分隔符,加货币符号,数字转百分数
  17. 神经网络调参-warmup and decay
  18. 分析编程题c语言,二级C语言部分上机编程题详细分析
  19. 集体所有制的企业是属于国企吗
  20. mysql 修改年龄_MYSQL——数据修改

热门文章

  1. java util.function.BiConsumer
  2. mybatis SqlMapConfig.xml mappers
  3. Spring mvc 组件
  4. C++ 函数默认参数和占位参数
  5. brackets ubuntu
  6. oracle大于或等于,如何用SQL实现最接近某一个值且大于等于这个值的一条记录
  7. java 虚拟内存 堆_jvm虚拟内存分布 与 GC算法
  8. 4安全框_压花玻璃与安全玻璃有哪些特点?玻璃隔断的介绍
  9. Maven学习总结(50)——Maven Dependency的 Scope 属性详解
  10. 腾讯研发总监王辉:十亿级视频播放技术优化揭秘