《maven的学习》 尚硅谷Maven视频(maven零基础入门)B站

Maven是一款用于Java项目的自动化构建工具,解决了项目模块划分、依赖管理、jar包下载和复制等问题。它遵循约定的目录结构,通过POM.xml文件管理项目配置和依赖。Maven的生命周期包括清理、编译、测试、打包、安装和部署等阶段,通过插件和目标实现自动化。安装Maven涉及配置环境变量,仓库管理包括本地和远程仓库。在Eclipse中使用Maven,可以通过插件设置实现更便捷的开发。
摘要由CSDN通过智能技术生成

 

一、目前的技术在开发中存在的问题


1.一个项目就是一个工程
(1)如果项目非常庞大,就不适合继续使用package来划分模块。最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以讲一个项目拆分为多个工程。
2.Jar需要别人替我们准备好,或到官网下载
(1)不同技术的官网提供jar包下载的形式是五花八门的。或者有些技术的官网就是通过maven或者SVN等专门的工具来提供下载。
(2)如果以非正规的方式下载的jar包,那么其中的内容也可能是不正规的。借助maven都可以以正规方式下载jar包。因为所有的知名框架或者第三方的jar包都按照统一的规范存放在了maven的中央仓库中。

3.jar包需要手动“复制”、粘贴到WEB-INF/lib目录下面。
(1)带来的问题是:同样的jar包文件重复出现在不同的项目工程当中。一方面浪费存储空间,一方面也让工程非常臃肿。借助于maven将jar包保存在仓库中,有需要使用的工程引用这个jar包即可,并不需要将这个jar包复制过来。
4.一个jar依赖的其他jar包需要自己手动加入到项目当中。
(1)Jar包往往不是孤立存在的,很多jar都需要在其他jar包的支持下工作的我们称之为依赖关系。commons-fileupload-1.3.jar依赖commons-io-2.0.1.jar,如果没有Io包,FileUpload就不能正常工作。借助于Maven处理jar包的依赖关系。Maven会自动将依赖的jar包导入进来。


二、maven是什么?


1.Maven是一款服务于Java平台的自动化构建工具
(1)构建工具发展的历程:Make->Ant->Maven->Gradle
(2)构建: 以“Java源文件”、“框架配置文件”、“jsp”、“html”、“图片”等资源为原材料去生成一个可以运行的过程。
①生成:编译,搭建,部署
②编译:.java--->.class
③部署:当我们需要通过浏览器访问Java程序时就必须将包含Java程序的web工程编译的结果“拿”到服务器指定目录下,并启动服务器才行。这个“拿”的过程我们称之为部署。
1)在开发工程中,所有的路径或配置文件中配置的类路径都是以编译结果的目录为的。
④运行时环境其实是jar包的引用,并没有jar包本身复制到项目中。

(3)构建中的各个环节
①清理:将以前编译得到的旧的CLASS字节码文件删除。为下一次编译做准备。
②编译:将Java源程序编译成.CLASS字节码文件。
③测试:自动测试,自动调用junit程序
④报告:测试程序执行的结果。
⑤打包:动态web工程打war包。Java工程打jar包。
⑥安装:maven特定的概念——将打包的得到的文件复制到“仓库”中指定的位置。
⑦部署:将war包复制到servlet容器的指定的目录下,使其可以运行。
(4)自动化构建
                  

 

三、安装maven核心程序


1.检查JAVA_HOME环境变量(因为maven也是Java写的,也需要运行在Java虚拟机上,所以也需要通过Java_Home去知道jdk在哪).

2.解压maven核心程序的压缩包。
3.配置maven的环境变量
(1)MAVEN_HOME或M2_HOME(home一般都是bin目录的上一级)

(2)Path(path一般配置到bin目录)

4.验证:运行mvn -v命令查看maven版本
(1)https://www.cnblogs.com/qnly/p/10477378.html(我出现的错误)


四、Maven的核心概念


1.约定的目录结构----->
2.POM
(1)pom:project object model项目对象模型
(2)pom.xml对于maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。
3.坐标(GAV)
(1)maven工程的坐标与仓库中路径的对应关系
(2)maven中的坐标:使用下面三个向量在仓库中唯一定位一个maven工程。
①groupid:公司或组织域名倒序+项目名
eg:<groupid>com.atguigu.maven</groupid>
②artifactid:模块名
eg:<artifactid>Hello</artifactid>
③version:版本 
eg:<artifactid>Hello</artifactid>
4.依赖

(1)(虽然在pom.xml中添加了依赖信息,但是仍然报错了)Maven解析依赖信息时会到本地仓库中查找被依赖的jar包。(不连外网)
(2)外网)对于我们自己开发的maven工程,使用install命令安装以后就可以进入仓库了。
(3)依赖的范围
①compile
1)对主程序是否有效:有效
2)对测试程序是否有效:有效
3)是否参与打包:参与
②test:junit
1)对主程序是否有效:无效
2)对测试程序是否有效:有效
3)是否参与打包:不参与
③provided:servlet-api.jar
1)对主程序是否有效:有效
2)对测试程序是否有效:有效
3)是否参与打包:不参与
4)是否参与部署:不参与

5.仓库(目录)
(1)仓库的分类
①本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有maven工程服务。
②远程仓库:
1)局域网范围的远程仓库(私服):搭建在局域网环境中,为局域网范围内的所有maven工程服务。
2)中央仓库:架设在Internet上,为全世界所有的maven工程服务。
3)中央仓库的镜像:为了分担中央仓库的流量,提升用户访问速度。
(2)仓库中保存的内容:maven工程
①maven自身所需要的插件
②第三方框架或工具的jar包(一开始也是maven工程只不过后来打成jar包了)
1)第一方:JDK
2)第二方:开发人员
③我们自己开发的maven工程(我们自己开发的maven工程也可以放在仓库里)。

6.生命周期/插件/目标
(1)各个构建环节执行的顺序:不能打乱顺序必须按照既定的正确顺序来执行。
(2)maven核心程序中定义了抽象的生命周期,生命周期中的各个阶段的具体任务是由插件来完成的。
①Clean Lifecycle:在进行真的构架之前进行一些清理工作。
②Default Lifecycle:构建的核心部分,编译,测试,打包,安装,部署等等。
③Site Lifecycle生成项目报告,站点,发布站点。
(3)maven核心程序为了更好的实现自动化构建,按照这一特点执行生命周期中各个阶段:不论现在执行生命周期中的哪一个阶段,都是生命周期最初的位置开始执行。比如:生命周期Default Lifecycle中执行compile阶段,则需要从validate开始。
(4)插件和目标

①可以将目标看做“调用插件功能的命令”。
②生命周期的各个阶段仅仅定义了要执行的任务是什么。
③各个阶段和插件的目标是对应的。
④相似的目标由特定的插件完成。
7.继承
8.聚合


五、第一个Maven工程


1.创建约定的目录结构

2.为什么要遵守约定的目录结构呢?
(1)Maven要负责我们这个项目自动化构建,以编译为例,maven要想自动编译,需要知道Java源文件保存哪里.
(2)如果我们自定义的东西想要让框架或工具知道,有两种方法:
①以配置的方式明确告诉框架
②遵守框架内部存在的约定
3.常用maven命令
(1)注意:
①执行与构建相关的maven命令,必须进入pom.xml所在的目录。(编译、测试、打包、部署的命令)
(2)常用的命令:
①mvn clean:清理target文件
②mvn compile:编译主程序
③mvn test-compile:编译测试程序
④mvn test:执行测试
⑤mvn package:打jar包
⑥mvn install:安装
⑦mvn site:生成站点
1) https://www.cnblogs.com/lxcy/p/8279899.html
(3)关于联网的问题:
①maven核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件完成,而插件本身并不包含在maven的核心程序中。
②当我们在执行maven命令需要用到某些插件的时候,maven核心会首先到本地仓库中查找。
1)本地仓库默认位置:[系统当前用户的家目录]\.m2\repository
a.C:\Users\pc1\.m2\repository
③maven若是在本地仓库没找着需要的插件,那么就会自动连接外网,到中央仓库去下载。
④如果无法连接外网则构建失败。
⑤修改默认本地仓库的位置可以让maven核心程序到我们事先准备好的目录下查找插件。
1)找到maven解压目录\conf\settings.xml


2)<localRepository>/path/to/local/repo</localRepository>放在注释外面,默认是用户下面。

六、eclipse插件
1.在Eclipse中使用maven
(1)maven插件:Eclipse内置
(2)Maven插件的设置:
①installations:指定maven核心程序的位置,不建议使用插件自带的maven程序,而应该使用自己解压的那个。

 
 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值