1、maven简介
1、maven是什么?
官网:maven官网
Apache Maven是一个项目构建和依赖管理的工具。依赖(jar包)—中央仓库下载
2、为什么使用maven?
2.1添加第三方jar包(解决jar重复)
在今天的JavaEE开发领域,有大量的第三方框架和工具可以供我们使用。
要使用这些jar包简单的 方法就是复制粘贴到WEB-INF目录下的lib目录下。
但是这会导致每次创建一个新的工程就需要将jar包 重复复制到lib目录下,从而造成工作区中存在大量重复的文件。
而使用Maven后每个jar包只在本地仓库中保存一份,需要jar包的工程只需要维护一个文本形式的 jar包的引用——我们称之为“坐标”。不仅极大的节约了存储空间,让项目更轻巧,更避免了重复文件太 多而造成的混乱。
2.2 jar包之间的依赖关系
jar包往往不是孤立存在的,很多jar包都需要在其他jar包的支持下才能够正常工作,我们称之为jar 包之间的依赖关系。
典型的例子是:
commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar,如 果没有IO包,FileUpload包就不能正常工作。
那么问题来了,你知道你所使用的所有jar包的依赖关系吗?当你拿到一个新的从未使用过的jar 包,你如何得知他需要哪些jar包的支持呢?
如果不了解这个情况,导入的jar包不够,那么现有的程序 将不能正常工作。再进一步,当你的项目中需要用到上百个jar包时,你还会人为的,手工的逐一确认它 们依赖的其他jar包吗?这简直是不可想象的。
而引入Maven后,Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来, 无需人工参与,节约了我们大量的时间和精力。
用实际例子来说明就是:
通过Maven导入commonsfileupload-1.3.jar后,commons-io-2.0.1.jar会被自动导入,程序员不必了解这个依赖关系。
2.3 处理jar包之间的冲突
上一点说的是jar包不足项目无法正常工作,但其实有的时候jar包多了项目仍然无法正常工作,这 就是jar包之间的冲突。
举个例子:
我们现在有三个工程MakeFriend、HelloFriend、和Hello。MakeFriend依赖 HelloFriend,HelloFriend依赖Hello。而Hello依赖log4j.1.2.17.jar,HelloFriend依赖 log4j.1.2.14.jar。
如下图所示:
那么MakeFriend工程的运行时环境中该导入log4j.1.2.14.jar呢还是log4j.1.2
这样的问题一个两个还可以手工解决,但如果系统中存在几十上百的jar包,他们之间的依赖关系会 非常复杂,几乎不可能手工实现依赖关系的梳理。
使用Maven就可以自动的处理jar包之间的冲突问题。
因为Maven中内置了两条依赖原则: 短路径者优先和先声明者优先,上述问题MakeFriend工程会自动使用log4j.1.2.14.jar。
2.4 获取第三方jar包
2.5 将项目拆分成多个工程模块
3 项目构建
3.1构建环节
3.2自动化构建
4、仓库
4.1仓库的分类
4.2Maven 依赖搜索顺序
5、安装maven
5.1下载maven
5.2解压
5.3配置环变量
告诉系统我们的软件装在哪里
5.5初始化
运行命令 mvn help:system
6、Eclipse安装与使用
直接解压就可以使用,选择工作空间(项目在放的地方)
6.1创建java项目
6.2web项目
配置tomat
新建web项目
6.4新建maven项目
maven项目的创建要连网。maven项目的创建有两种:快速模板(推荐)、骨架。
6.4.1快速模板-java项目(推荐)
6.4.2快速模板-web项目
创建项目发现报错,是因为没有给这个项目添加web.xml
添一个WEB-INF/web.xml
在webContent下新一个index.jsp发现报错
或添加依赖
6.4.3骨架-web(了解)
6.4.4eclipse配置maven
7、Idea中创建maven项目
7.1 Idea—快速模板创建maven项目
7.2 idea配置maven
idea创建maven项目默认是java(在pom文件的默认值packaging:jar) 修改为web项目,修改pom.xml
2、添加webapp目录
8、添加依懒
修改pom.xml,添加你需要jar–依赖
idea可以直接搜索,alt+insert(fn)>dependencies
idea查看我的依懒
本地仓库
9、常用命令
10、Maven的核心概念
10.1、约定的目录结构
10.2 POM
10.3. 坐标
10.4 生命周期
clean
default(默认)
site(站点)
11、依赖范围和传递性
11.1 依赖范围
11.2 依赖传递
11.3依赖冲突
11.4依赖排除