Maven学习笔记

记录自己的Maven学习的笔记,学习课程是通过B站尚硅谷的视频学习。

@Description Maven学习
@author Van
①概念
    1.目前掌握的技术:
        浏  览  器
            👇
        表  示  层   ---->视图层---->H5/CSS/JS/JSP
                          控制层---->Servlet/Action(Strust2)/Handler(SpringMVC)
            👇
        业务逻辑层   ---->Spring IOC AOP
            👇
        持  久  层   ---->JDBC/JDBCUtils/SpringJdbcTemplate(轻量级)/Hibernate(重量级连接)/Mybatis
    2.目前技术在开发中存在的问题
        1.一个项目就是一个工程
            ---》如果项目非常大,就不适合继续使用package来划分,最好是每一个模块对应一个工程,利于分工协作
            ---》借助Maven就可以将一个项目拆分成多个工程。
        2.项目中需要jar包必须手动”复制“到WEB-INF/lib目录下
            ---》带来的问题是重复jar包出现在重复的工程中,浪费存储空间,也让项目比较臃肿
            借助Maven,可以将jar包仅仅保存在”仓库“中,有需要使用的工程“引用”这个文件接口,并不需要真的把jar包复制过来
        3.jar包需要别人替我们准备好,或到官网下载
            ---》不同技术官网提供的jar包的形式五花八门
            ---》有些技术的官网就是通过Maven或SVN等专门的工具来提供下载的
            ---》如果是非正规的方式下载的jar包,那么其中的jar包也可能不规范
            借助Maven可以以一种规范的方式去下载jar包,因为所有知名框架或第三方工具的jar包都存放在Maven的中央仓库中
        4.一个jar依赖其他jar需要自己手动加入到项目中
            ---》jar包的依赖关系非常复杂且都需要自己非常清楚的了解,如果都去了解会增加许多不必要的开发成本
            Maven会自动将被依赖的jar包导入进来
    3.什么是Maven
        1.是一款服务于Java平台的自动化构建工具
        2.构建
            1.概念:以“Java源文件”、“框架配置文件”、“HTML”、“图片”等资源为“原材料”,去“生产”一个可以运行的项目的过程
            2.编译、部署、搭建
        3.构建过程中的生命周期
            1.清理:将以前编译得到的旧的Class字节码文件删除,为下一次编译准备
            2.编译:编译成字节码文件
            3.测试:自动测试,自动调用junit程序
            4.报告:测试程序执行的结果
            5.打包:动态Web工程打war包,Java工程打Jar包
            6.安装:Maven特定的概念--将打包得到的文件复制到“仓库”中的指定位置
            7.部署:将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其可以运行
        4.自动化构建
    4.安装Maven核心程序
        1.检查Java_HOME环境变量
        2.解压Maven核心程序的压缩包
        3.配置Maven相关的环境变量
            1.MAVEN_HOME或M2_HOME
            2.path
        4.mvn -v查看maven的版本
    5.Maven的核心概念
        1.约定的目录结构
        2.POM
        3.坐标
        4.依赖
        5.仓库
        6.生命周期/插件/目标
        7.继承
        8.聚合
②第一个Maven工程
    1.创建约定的目录结构
        1. 根目录:工程名
        2. ------src目录:源码
           ------|------main:存放主程序
           ------|------| ------java:存放java源文件
           ------|------| ------resources:存放框架或其他工具的配置文件
           ------|------test:存放测试程序
           ------|------| ------java:
           ------|------| ------resources:
        3. ------pom.xml:Maven工程的核心配置文件
        为什么遵守约定的目录结构?
            1.Maven自动化构建,得以Maven的标准来
            2.自己定义的东西要让框架或工具知道得遵守Maven内部的约定
                log4j.properties/log4j.xml
        4.约定>配置>编码
③常用Maven命令
    1.注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在的目录
        与构建过程相关:编译、测试、打包、...
    2.常用命令
        1.mvn clean:清理
        2.mvn compile:编译主程序
        3.mvn test-compile:编译主程序
        4.mvn test:执行测试
        5.mvn package:打包
        6.mvn install:安装
        7.mvn site:生成站点
④关于联网问题:
    1.Maven的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成。而插件本身并不包含在Maven的核心程序中。
    2.当执行的Maven命令需要用到某些插件时,Maven核心程序会首先到本地仓库中查找。
    3.本地仓库的默认位置:【系统当前用户的家目录】\.m2\repository
    4.Maven核心程序如果在本地仓库中找不到需要的插件,那么它会自动联网到中央仓库去下载
    5.如果没有联网,则构建失败
    6.可以修改默认本地仓库的位置
        1.maven解压目录\conf\settings.xml
        2.找到localRepository标签,从注释中取出。将内容修改为准备好的自己的仓库目录    
⑤POM
    1.pom含义:Project Object Model 项目对象模型
    2.pom.xml对于Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置    
⑥坐标
    1.使用三个向量在仓库中唯一定位一个Maven工程
        1.groupid:公司/组织域名倒序+项目名
        2.artifactid:模块名称
        3.version:版本
    2.Maven工程的坐标与仓库中路径的对应关系        
⑦仓库
    1.仓库的分类:
        1.本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有Maven工程服务
        2.远程仓库
            1.私服:搭建在局域网环境中,为局域网所有的Maven工程服务
            2.中央仓库:架设在Internet上,为全世界所有的Maven工程服务
            3.中央仓库镜像:为了分担中央仓库的流量和压力,提升用户访问速度
    2.仓库中保存的内容:Maven工程
        1.Maven自身所需要的插件
        2.第三方框架或工具的jar包
        3.自己开发的Maven工程
⑧依赖
    1.Maven解析依赖信息时,会在本地仓库中查找被依赖的jar包    
        1.对于自己开发的Maven工程,使用install命令安装后就可以进入仓库
    2.依赖的范围:
        1.compile:
            1.对主程序是否有效:有效
            2.对测试程序是否有效:有效
            3.是否参与打包:参与
        2.test:
            1.对主程序是否有效:无效
            2.对测试程序是否有效:有效
            3.是否参与打包:不参与
        3provided:
            1.对主程序是否有效:有效
            2.对测试程序是否有效:有效
            3.是否参与打包:不参与
⑨生命周期:
    1.各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行
    2.Maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的
    3.Maven核心程序为了更好的实现自动化构建,按照这一特点的执行生命周期的各个阶段,不论现在要执行生命周期中的哪一个阶段,都是从这个生命周期最初的位置开始执行
    4.插件和目标
        1.生命周期的各个阶段仅仅定义了要执行的任务是什么。
        2.各个阶段和插件的目标是对应的
        3.相似的目标由特定的插件来完成
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值