maven学习笔记

  我学习maven的地址在   https://www.bilibili.com/video/BV1TW411g7hP?p=1      相信我,学习的过程中你一定会直呼:妙啊!!!老师是真的细啊~~~~


一、为什么学习Maven(maven有哪些极其强悍的优势)?

  1、将一个庞大的项目拆分成多个互相联系的工程

    比如:每个菜单都对应一个工程,所有工程联系在一起成为一个项目。

    

     思考:maven如何将这些拆分的工程联系起来的?

    

  2、通过对maven仓库中jar的接口的引用,代替直接将jar复制到项目中的方式,大大地节约了空间(多个项目共享)

    

   3、maven能以规范的方式下载jar,因此下载的jar也是规范的(不用CSDN的积分啦,也不下载到木马程序啦~~~哈哈哈)

    

   4、jar往往需要依赖其他的jar,maven会自动将依赖的jar添加进来

    比如,我pom中加入Junit的依赖(Junit依赖于hamcrest-core-x.x.jar),所以maven会自动加入hamcrest-core-x.x.jar的依赖接口

    

二、maven是什么?

  1、maven是一款服务于Java平台的自动化构建工具
    Make--->Ant--->Maven--->Gradle

  2、构建:(我们开发工具看到的项目结构,一般和工作空间目录结构相同,但是我们运行实际结构是需要构建的,一般是将:webapp下内容放到项目名称下,src下编译放到classes,并放于WEB-INF下)

    构建就是将我们编写的Java代码、框架配置文件、国际化等其他资源文件、JSP页面图片等静态资源文件作为“原材料”,生产出一个可以运行的项目的过程。

    

    Tips:运行时环境

    

   3、构建的环节

    •   清除:将以前编译得到的class字节码文件删除,为下一次编译做准备
    •   编译:将Java源文件编译成字节码文件
    •   测试:自动测试,自动调用Junit程序
    •   报告:测试程序执行的结果
    •   打包:动态web工程打包成war,Java工程打包成jar
    •   安装:Maven特定的概念---将打包的文件复制到“仓库”指定的位置
    •   部署:将动态web工程的war复制到servlet容器指定目录下(Tomcat是webapp目录),使其可以运行

 

三、maven的核心概念

  1、约定的目录结构

  2、POM

  3、坐标

  4、依赖

  5、仓库

  6、生命周期、插件、目标

  7、继承

  8、聚合

四、约定的目录结构

   约定>配置>编码

  

 五、常用Maven命令

  1、注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在目录(eclipse中右键点击pom.xml)

  2、常用命令:

    mvn clean:清理

    mvn compile:编译主程序

    mvn test-compile:编译测试程序

    mvn test:执行测试

    mvn package:打包

    mvn install:安装

    mvn site :生成站点

六、POM

  1、project object model 项目对象模型    DOM  document object model 文档对象模型

  2、pom.xml是Maven工程的核心配置文件,与构建过程相关的一切设置都在这个文件中配置,重要程度相当于web.xml对于动态Web工程

七、坐标(GAV)

  1、坐标含义

  groupid:公司或组织域名倒序+项目名

  artifactid:模块名

  version:版本

  2、Maven工程的坐标与仓库中路径的对应关系

  

八、仓库

  1、仓库的分类

   本地仓库    远程仓库(私服:局域网;中央仓库镜像:各大洲分担中央仓库流量;中央仓库:Internet 最终boss)

    中央仓库地址:https://repo.maven.apache.org/maven2/

    下载流程

    

   2、仓库中保存的内容

    Maven自身所需要的插件

    第三方框架或工具的jar包

    我们自己开发的maven工程

九、依赖   

  1、下载依赖(本地>私服>中央仓库镜像>中央仓库) 

    安装依赖:自己开发的maven工程,使用mvn install 安装进入仓库

  2、依赖的范围

    compile(默认) :对主程序和测试程序有效,参与打包和部署(全程有效):比如spring-core

    test:仅对测试程序有效,对主程序无效,不参与打包和部署(开发阶段测试有效):比如Junit

    provided:对主程序和测试程序有效,不参与打包和部署(开发阶段有效):比如servlet-api.jar

  3、依赖的传递性

    compile范围的依赖可以传递。引入依赖也会引入该依赖所需要的依赖

  4、依赖的排除

    

   5、依赖的原则

    就近原则    先声明者优先(路径长度相同时)

  6、统一管理依赖版本

    

     

十、生命周期

  1、maven核心程序为了是实现自动化构建,不论现在要执行生命周期的哪一个阶段,都是从生命周期的初始位置开始执行

十一、继承

  1、创建一个Maven工程作为父工程。注意:打包方式pom

  2、子工程中声明对父工程的引用

    

   3、将子工程的坐标中与父工程坐标中重复的内容删除(建议)

    

   4、再父工程中统一管理依赖

    

   5、子工程中删除依赖的版本号部分

    

   注意:配置继承后,执行安装命令后要先安装父工程

十二、聚合

  1、作用:一键安装各个模块工程

  2、配置方式:

    

原文地址:https://www.cnblogs.com/LiuChengGang/p/14253541.html