Maven学习笔记__上篇
Maven学习笔记__上篇
本文档基于 尚硅谷视频教程 整理,仅用于个人学习/交流使用。
视频链接:https://www.bilibili.com/video/BV1TW411g7hP
官方资料:链接:https://pan.baidu.com/s/1o66CnnnX-MkoLa3z56joew 提取码:8uws
参考博客:https://blog.csdn.net/zxm1306192988/article/details/76209062
Maven学习笔记__上篇:https://blog.csdn.net/A233666/article/details/112852096
Maven学习笔记__下篇:https://blog.csdn.net/A233666/article/details/112852129
目录标题
- Maven学习笔记__上篇
- 1、目前掌握的技术
- 2、[why]目前的技术在开发中存在的问题
- 3、[what]Maven是什么
- 4、安装Maven核心程序
- 5、Maven的核心概念
- 6、第一个Maven工程
- 7、Maven常用命令
- 8、关于联网问题
- 9、POM
- 10、坐标
- 11、仓库
1、目前掌握的技术
Maven 是干什么用的?这是很多同学在刚开始接触 Maven 时最大的问题。之所以会提出这个问题, 是因为即使不使用 Maven 我们仍然可以进行 B/S 结构项目的开发。从表述层、业务逻辑层到持久化层 再到数据库都有成熟的解决方案——不使用 Maven 我们一样可以开发项目啊?
下图是我们目前已经掌握的技术:
2、[why]目前的技术在开发中存在的问题
一个项目就是一个工程
如果项目非常庞大,就不适合继续使用package来划分模块。最好是每一个模块对应一个项目,利于分工协作。
借助于maven就可以将一个项目拆分成多个工程。项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下
带来的问题:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。
借助Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程“引用”这个文件,并不需要重复复制。
jar包需要别人替我们准备好,或到官网下载
所有知名框架或第三方工具jar包已经按照统一规范放在了Maven的中央仓库中。
一个jar包依赖的其他jar包需要自己手动加到项目中
jar 包往往不是孤立存在的,很多 jar 包都需要在其他 jar 包的支持下才能够正常工作,我们称之为 jar 包之间的依赖关系。最典型的例子是:commons-fileupload-1.3.jar 依赖于 commons-io-2.0.1.jar,如果 没有 IO 包,FileUpload 包就不能正常工作。
Maven会自动将被依赖的jar包导入进来。
3、[what]Maven是什么
Maven 是 Apache 软件基金会组织维护的一款
自动化构建工具
,专注服务于 Java 平台的项目构建和依赖管理 。Maven 这个单词的本意是:专家,内行。读音是[‘meɪv(ə)n]或[‘mevn]。构建工具的发展:Make→Ant→Maven→Gradle
构建概念∶以“Java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源为“原材料”,去“生产”一个可以运行的项目的过程。
构建概念:就是以我们编写的Java代码、框架配置文件、国际化等其他资源文件、jsp页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。
编译:Java源文件[User.java]→编译→Class字节码文件[User.class]→交给JVM去执行
部署︰一个BS项目最终运行的并不是动态Web工程本身,而是这个动态Web工程“编译的结果”
生的鸡→处理→熟的鸡
动态Web工程→编译、部署→编译结果
eclipse中的项目与tomcat中编译结果对比:
开发过程中,所有的路径或配置文件中配置的类路径等都是以编译结果的目录结构为标准的。
构建过程中的几个主要环节
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:将每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对象war包。
⑥安装:在Maven环境下特指将打包的结果——Jar包或War包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。自动化构建
4、安装Maven核心程序
检查JAVA_HOME环境变量
C:\Users\zxm>echo %JAVA_HOME%
D:\Program Files\Java\jdk1.8.0_111解压Maven核心程序的压缩包,放在一个非中文、无空格 的路径下
D:\ProgramData\apache-maven-3.2.2
配置Maven相关的环境变量
验证:运行 mvn -v 命令查看Maven版本
C:\Users\zxm>mvn -v
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T21:51:42+08:00)
Maven home: D:\ProgramData\apache-maven-3.2.2
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: D:\Program Files\Java\jdk1.8.0_111\jre
Default locale: zh_CN, platform encoding: GBK
OS name: “windows 10”, version: “10.0”, arch: “amd64”, family: “dos”
5、Maven的核心概念
- 约定的目录结构
- POM
- 坐标
- 依赖
- 仓库
- 生命周期/插件/目标
- 继承
- 聚合
6、第一个Maven工程
创建约定的目录结构
pom.xml文件为Maven工程的
核心配置文件
为什么要遵循约定的目录结构呢?
我们在开发中如果需要让第三方工具或框架知道我们自己创建的资源在哪,那么基本上就是两种方式:
①以配置文件的方式明确告诉框架 如 < param-value>classpath:spring-context.xml < /param-value>
②遵循框架内部已经存在的约定 如log4j的配置文件名规定必须为 log4j.properties 或 log4j.xml ;Maven 使用约定的目录结构
现在 JavaEE 开发领域普遍认同一个观点:
约定>配置>编码
。意思就是能用配置解决的问题就不编码, 能基于约定的就不进行配置。而 Maven 正是因为指定了特定文件保存的目录才能够对我们的 Java 工程进行 自动化构建。
7、Maven常用命令
注意:执行与构建过程相关的Maven命令,必须进入pom.xml 所在的目录。
常用命令
【1】mvn clean : 清理
【2】mvn compile : 编译主程序
【3】mvn test-compile : 编译测试程序
【4】mvn test : 执行测试
【5】mvn package : 打包
【6】mvn install : 安装
【7】mvn site :生成站点
8、关于联网问题
Maven 的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须有特定的插件来完成。而插件本身不包含在Maven核心程序中。
当我们执行的Maven命令需要用到某些插件时,Maven核心程序会首先到本地仓库中查找。
本地仓库的默认位置:[系统登陆用户的家目录] \ .m2\repository
Maven核心程序如果在本地仓库中找不到需要的插件,那么它会自动连接外网,到中央仓库下载。
如果此时无法连接外网,则构建失败。
修改默认本地仓库的位置可以让Maven核心程序到我们事先准备好的目录下查找插件
①找到Maven解压目录\conf\settings.xml ②在setting.xml 文件中找到 localRepository 标签 ③将 < localRepository>/path/to/local/repo< /localRepository>从注释中取出 ④将标签体内容修改为自定义的Maven仓库目录
9、POM
Project Object Model:项目对象模型。将 Java 工程
的相关信息封装为对象
作为便于操作和管理的模型
。 Maven 工程的核心配置。可以说学习 Maven 就是学习 pom.xml 文件中的配置。
含义:Project Object Model 项目对象模型
DOM :Document Object Model 文档对象模型
pom.xml 对于 Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。
重要程度相当于web.xml 对于动态web工程
10、坐标
数学中的坐标:
①在平面中,使用X,Y坐标可以唯一的定位平面中任何一个点。
②在空间中,使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点。Maven的坐标:
使用下面三个向量在仓库中唯一定位一个Maven工程
①groupid:公司或组织域名倒序+项目名
< groupid>com.atguigu.maven< /groupid>
②artifactid:模块名
< artifactid>Hello< /artifactid>
③version:版本
< version>1.0.0< /version>
如何通过坐标到仓库中查找 jar 包?
[1]将 gav 三个向量连起来
com.atguigu.maven+Hello+0.0.1-SNAPSHOT
[2] 以连起来的字符串作为目录结构到仓库中查找
com/atguigu/maven/Hello/0.0.1-SNAPSHOT/Hello-0.0.1-SNAPSHOT.jar
注意:我们自己的 Maven 工程必须执行安装操作才会进入仓库。安装的命令是:mvn install
11、仓库
仓库的分类
①本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有Maven工程服务
②远程仓库
(1)私服:搭建在局域网环境中,为局域网范围内的所有Maven工程服务
(2)中央仓库:假设在Internet上,为全世界所有Maven工程服务
(3)中央仓库镜像:为了分担中央仓库流量,提升用户访问速度仓库中保存的内容:Maven工程
①Maven自身所需要的插件
②第三方框架或工具的jar包
③我们自己开发的Maven工程
不管是什么样的 jar 包,在仓库中都是按照坐标生成目录结构,所以可以通过统一的方式查询或依赖。
Maven学习笔记__上篇相关推荐
- maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目
maven学习笔记 一.什么是maven Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Life ...
- maven 学习笔记(三)创建一个较复杂的 eclipse+android+maven 工程
前面maven 学习笔记(二)已经说过了怎样通过插件创建一个简单的工程,有了前面的基础,创建一个较复杂的工程就容易了很多.同样是通过已经有了插件,同样如果插件系统中并未存在,还是需要通过Add Arc ...
- 黑马程序员Maven学习笔记
前言 这里是黑马程序员Maven学习笔记分享,这是视频链接. 我还有其它前端内容的笔记,有需要可以查看. 文章目录 前言 基础 Maven简介 Maven是什么 Maven的作用 Maven的下载 M ...
- maven学习笔记——尚硅谷
文章目录 maven学习笔记--尚硅谷 第一章 Maven概述 第一节 为什么要学习Maven 1.Maven 作为依赖管理工具 1.1 jar 包的规模 1.2 jar 包的来源 1.3 jar 包 ...
- Maven 学习笔记 - 跳过测试 skipTests
Maven 学习笔记 - 跳过测试 方案一 idea中操作 方案二 maven命令 方案三 maven打包插件配置 1. 跳过所有测试 2. 详细指定:包含.排除 参考资料 方案一 idea中操作 打 ...
- TODO maven学习笔记
maven是什么? 我的体会 我理解得maven就是一个构建工具,可以做一些项目得整合操作,我们把一些常见得操作,封装在maven里面,并给它命名成 clean,test,compile,这些步骤都是 ...
- 麦克纳姆轮转速计算(运动解算)(_学习笔记__)
这篇文章只做为一篇学习笔记发布出来,总结了我学习上遇到过的问题和我的一些思考,可以帮助大家快速学习以及学习后的二次启发,说不定能解决你目前遇到的问题呢.只讲了麦轮的轮子转速是怎样计算出来的,关于它的特 ...
- Maven学习笔记,动力节点maven教程随堂笔记(史上最全)
Maven笔记 这篇笔记的学习视频来自b站动力节点 https://www.bilibili.com/video/BV1dp4y1Q7Hf 笔记中的源码下载地址 动力节点maven资料 第一部分 1. ...
- maven 学习笔记(一)eclipse+android+maven
由于工作需要最近开始接触java,对于这类开源的东西发现居然是第一次接触,里面有太多的东西需要熟悉.其中最著名的就是maven,据说可以使得工程从编译至打包发布,效率提高很多倍.不过使用起来却比较麻烦 ...
最新文章
- Neighbor-Vote:使用邻近距离投票优化单目3D目标检测(ACM MM2021)
- Apache安装80端口被占用解决方案
- html 怎么自动让图片居中显示,css中怎样让图片居中显示?
- 详解如何实现在线聊天系统中的实时消息获取
- 目标检测--吴恩达深度学习记录
- 关于Android的一些设计【转】
- getReadableDatabase() 和 getWritableDatabase()的区别
- python自定义异常类时、可以继承的类是_Python异常类型及处理、自定义异常类型、断言...
- 如果淘宝双十一架构用. Net Core,如何“擒住”高并发、高可用、低延迟?
- 您已关注公众号满1年,诚邀您免费加入金融学习交流群!
- maven学习七之用户密码修改和添加用户
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_3_BufferedInputStream_字节缓冲...
- Maven 镜像设置
- 基于深度学习的图像识别进展:百度的若干实践
- libtorch opecv c++ cmake clion
- Yuga Labs收购CryptoPunks 的始末是怎么样的?
- 微服务下权限校验方案
- 芯动联科在科创板IPO过会:拟募资10亿元,金晓冬为实际控制人
- Pet Peeve 是什么?
- 一个简单的B站视频抽奖小程序
热门文章
- IDEA Intellij小技巧和插件
- 数论 质因数分解 试除法
- django中models的filter过滤方法
- better-scroll内pullingUp无效(控制台报错)
- AprilTag: A robust and flexible visual fiducial system论文解读
- 陆奇也不能免AIGC这个「俗」
- EVE模拟器完整路由拓扑实验报告
- 规则引擎Drools示例:个人所得税计算器、信用卡申请、保险产品准入规则
- CCNP13:QOS【分类、队列、标记、丢弃】技术
- 互联网晚报 | 05月17日 星期二 | 郑州首套房贷利率最低降至4.4%;可口可乐被曝员工不得购买竞品...