1.1、为什么使用Maven?
1.1.1、Maven
作为依赖管理工具
(1)jar
包的规模
-
随着使用越来越多的框架,或者框架封装程度越来越高,项目中使用的
jar
包也越来越多。项目中,一个模块里面用到上百个jar
也是非常正常的。 -
jar
包不统一,jar
包不兼容 -
工程升级维护过程操作繁琐
-
……
(2)jar
包的来源
- 这个
jar
包所属技术的官网。官网通常是英文界面,网站的结构有不尽相同,甚至找到下载链接还发现需要通过特殊的工具下载。 - 第三方网站提供下载。问题是:不规范,在使用的过程中会出现各种问题。
jar
包的名称jar
包的版本jar
包内的具体细节
- 而使用
Maven
后,依赖对应的jar
包能够自动下载,方便、快捷又规范。
(3)jar
包之间的依赖关系
框架中使用jar
包,不仅数量庞大,而且彼此之间存在错综复杂的依赖关系。依赖关系的复杂程度,已经上升到了完全不能靠人力手动解决的程度。另外,jar
包之间有可能产生冲突。进一步增加了我们在jar
包使用过程中的难度。
1.1.2、Maven
作为构建管理工具
-
当使用
IDEA
进行开发时,构建是IDEA
替我们做的。 -
脱离
IDE
环境,仍需构建
1.1.3、结论
- 管理规模庞大的
jar
包,需要专门工具。 - 脱离
IDE
环境,执行构建操作,需要专门工具。
1.2、Maven是什么
1.2.1、构建
Java
项目开发过程中,构建指的是使用【原材料生产产品】的过程。
- 原材料
Java
源代码- 基于
HTML
的Thymeleaf
文件 - 图片
- 配置文件
- ……
- 产品
- 一个可以在服务器上运行的项目
构建过程包含的主要的环节:
- 清理:删除上一次构建的结果,为下一次构建做好准备
- 编译:
Java
源程序编译成*.class
字节码文件 - 测试:运行提前准备好的测试程序
- 报告:针对刚才测试的结果生成一个全面的信息
- 打包:
Java
工程:jar
包Web
工程:war
包
- 安装:把一个
Maven
工程经过打包操作生成的jar
包或war
包存入到Maven
仓库 - 部署:将准备好的
jar
包或war
包部署到服务器上运行- 部署
jar
包:把一个jar
包部署到Nexus
私聊服务器上 - 部署
war
包:借助相关Maven
插件(例如cargo
),将war
包部署到Tomcat
服务器上
- 部署
1.2.2、依赖
- 如果A工程里面使用了B工程的类、接口、配置文件等等这样的资源,那么就可以说A依赖B。
- 依赖管理中要解决的具体问题:
jar
包的下载:使用Maven
之后,jar
包会从规范的远程仓库下载到本地jar
包之间的依赖:通过依赖的传递性自动完成jar
包之间的冲突:通过对依赖的配置进行调整,让某些jar
包不会被导入