1: Maven简介
Maven: 翻译为"专家", “内行”
Maven是apache下的一个纯Java开发的开源项目
Maven是一个项目管理工具, 可以简化项目配置, 统一项目结构, 使得开发者的工作变得更简单
依赖: 比如我们前面创建的 JDBC 项目中 引用了一个mysql驱动包, 如果将这个jar包从项目中移除, 就会导致整个项目都运行不了, 此时我们可以说这个项目依赖于mysql驱动包(也就是依赖于这个jar包), 因此我们将项目中所需要引入的jar包称之为"依赖".
2: Maven的下载、安装、配置
-
2.1: 下载,安装maven
官方下载地址: http://maven.apache.org/download.cgi
maven是一个绿色软件, 解压之后就可以使用!
安装时建议安装的路径中不要包含中文和空格! -
2.2: 配置maven的本地仓库
1)什么是本地仓库
本地仓库就是本地硬盘上的一个目录, 这个目录用于存放Maven帮我们下载的所有jar文件(包括一些插件等)
如果不配置本地仓库, maven会使用一个默认的路径(以windows系统为例)作为本地仓库:
c:/uses/{当前用户}/.m2/repository
如果你没有这个目录(.m2/repository), maven会在第一次使用时自动创建以上目录
可以保持默认, 也可以将本地仓库配置到其他路径!2)如何配置本地仓库
找到[maven的安装目录]/conf/settings.xml, 在这个settings文件的55行, 添加如下内容:
<localRepository>d:/JaveDev/localRepo3</localRepository>
修改完后, 以后通过maven下载的所有jar文件都会保存到 D:/JavaDev/localRepo3/ 这个路径中! -
2.2: 配置maven的远程仓库
1)什么是远程仓库
如果不配置远程仓库,maven默认会从中央仓库下载所需要的jar包和插件
中央仓库是由maven团队维护的jar包仓库, 其中包含了全世界几乎所有的jar包, 全世界所有的人都可以通过网络连接中央仓库去下载依赖(jar包)。
所有中央仓库面向的是全球用户,所有下载速度比较慢!
总结: 如果不配置远程仓库,默认连接中央仓库下载所需要的jar包和插件,保存到本地仓库中!
2)如何配置远程仓库
如果使用的是外网,可以配置连接阿里云的远程仓库
配置方法: 找到[maven的安装目录]/conf/settings.xml 文件, 在settings文件的<mirrors>标签内部添加一个<mirror>标签, 例如:
配置连接阿里云的远程仓库:
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
- 2.3: 配置JDK版本
因为Maven和eclipse整合之后, 通过eclipse创建maven项目默认的JDK版本是1.5版本(太旧了)
可以在[maven的安装目录]/conf/settings.xml文件中配置JDK版本, 配置后, 再通过maven创建项目其中的JDK版本就是我们配置的版本。
配置方法是: 在settings文件的标签内部添加如下配置:<profile> <id>development</id> <activation> <jdk>1.8</jdk> <activeByDefault>true</activeByDefault> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
注意: 以上的本地仓库配置 和 远程仓库配置 以及 JDK版本配置 都是事先添加上上去的, 如果你自己到maven官网下载一个新的maven软件, 这个新的maven软件中是没有以上配置的, 这些配置需要你自己来添加!
-
2.4: 将maven整合到eclipse中
将maven整合到eclipse中, 就可以通过eclipse创建maven项目
(其实eclipse中也自带了maven插件, 但是不完整, 后期在使用时很可能会出现问题, 所以不建议使用)如果在将maven和eclipse整合之后, 再修改settings.xml文件, 如果想让修改的配置生效, 可以重启eclipse!
3: Maven的项目构建
-
3.1: 通过maven构建项目的两种方式
第一种: 使用简单方式构建maven项目
可以创建maven的java项目
可以创建maven的web项目
第二种: 使用模板构建maven项目
可以创建maven的java项目
可以创建maven的web项目
这里我们选择第一种方式, 即使用简单方式创建maven项目 -
3.2: 通过maven创建Java项目
通过maven创建了一个Java项目: MAVEN-Java01 -
3.3: 通过maven创建Web项目
通过maven创建了一个Web项目: MAVEN-Web01
创建maven的web项目后,项目上会有一个叉号,这是因为项目中缺少文件导致的,解决方法是:
在Web项目上右键 -->选择:JavaEE Tools -->选择:Generate Deployment…,webapp目录下就会生成WEB-INF目录和web.xml文件如果建好Web项目后, 项目中没有web.xml文件并且还不报错, 而且在项目上右键选项中没有"JavaEE Tools"这个选项, 很可能是你的eclipse版本不对(eclipse是java版的, 正确的应该是eclipse企业版本)
企业版本的标识: Eclipse IDE for Enterprise Java Developers
下载eclipse: https://www.eclipse.org/downloads/packages/!!!切换工程视图为包视图:window --> show view,在弹出的窗口中搜索:package,找到“package Explorer”双击打开即可!
-
3.4: maven项目的目录结构
通过maven创建的maven项目中有很多目录结构, 这些目录结构分别有哪些作用?
以 Maven-Web01 web项目为例来进行说明:
Maven-Web01
|-- src/main/java(源码目录): 主要用于存放主程序/项目里的Java源文件
|-- src/main/resources(源码目录): 主要用于存放项目所需要的配置文件
(比如.xml文件,.properties文件…)
|-- src/test/java(源码目录): 主要用于存放测试相关的java源文件
|-- src/test/resources(源码目录): 主要用于存放测试程序所需要的配置文件
|
|-- src/main/webapp: 相当于web应用的目录, 将来这个目录中可以存放web资源文件(html/css/js/jsp/图片等…)
|-- src/main/webapp/WEB-INF/web.xml文件: Web应用的核心配置文件
其中可以做很多配置, 比如配置Servlet,配置session,配置监听器、配置过滤器
|-- target/classes: 是源码目录中的文件经过编译后会输出到classes目录
|-- pom.xml: Maven项目的配置文件, 如果当前项目需要引入jar包(mysql驱动包), 就可以在pom文件中通过添加配置信息, 让maven帮我们去下载这个jar文件,并引入到项目中。
4: Maven的依赖管理
- 4.1: 如何在maven项目中引入依赖(即引入jar包)?
比如: 如何在maven项目中导入mysql8.0驱动包?
不要将jar包直接复制到当前项目中, 因为maven可以帮我们下载并引入jar包, 方法是: 在当前项目的pom.xml添加一个 标签, 在标签内部添加如下内容(mysql的依赖,mysql的坐标):
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
- 4.2: 引入到maven项目中的依赖(jar包), 存放在哪个位置?
引入到maven项目中的jar包, 存放在本地仓库中.
这个jar存放的具体位置就是: [本地仓库位置+当前jar的坐标]
比如: 在项目的pom文件中引入了mysql8.0.11的驱动包<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency>
而我们的本地仓库的位置是: D:\JavaDev\localRepo3
那么这个mysql8.0.11的jar文件的位置:
D:\JavaDev\localRepo3\mysql\mysql-connector-java\8.0.11
- 4.3: maven三种仓库之间的联系
本地仓库: 就是本地硬盘上的一个目录, 用于存放从[远程仓库]或者[中央仓库]下载下来的jar文件
远程仓库: 通常是由公司或团队搭建, 服务于公司或团队的内部远程仓库。
远程仓库刚搭建完毕时,内部几乎是没有jar包的,其中的jar包是从中央仓库下载下来并保存到远程仓库中。
中央仓库: 由maven团队维护的jar包仓库, 其中包含了全世界几乎所有的jar包, 全世界所有的人都可以通过网络连接中央仓库去下载依赖(jar包)。
所有中央仓库面向的是全球用户,所有下载速度比较慢!
假如:现在要做一个项目A,项目A中需要引入SSM三大框架的jar包
1)在项目A的pom文件中添加三大框架的坐标之后,maven首先会根据坐标到本地仓库中去寻找这三大框架的jar包
2)如果本地仓库中有这些jar包,直接引入到当前项目中即可!
3)如果本地仓库中没有这些jar包,maven会去连接远程仓库(前提是配置远程仓库),远程仓库中有的话,直接从远程仓库中下载到本地仓库中,在本地仓库中保留一份,再从本地仓库引入到项目A中。
如果本地仓库要从远程仓库下载jar包,而远程仓库也没有这个jar包,远程仓库会自动连接中央仓库,从中央仓库中下载到远程仓库,在远程仓库中保留一份,再下载到本地仓库中,再从本地仓库引入到项目A中
4)如果本地仓库中没有这些jar包,并且现在没有配置远程仓库,那么maven会直接连接中央仓库,从中央仓库下载jar包到本地仓库,在本地仓库中保留一份,再从本地仓库中引入到项目A中。
- 4.4: 如何在maven的pom文件中添加依赖?
如果不知道一个jar包的坐标信息, 怎么去在项目的pom文件中引入这个jar包?
添加方式一: 如果添加一个jar包不知道坐标是什么, 可以从网上搜索这个jar包的坐标
搜索jar包坐标的网址:
http://mvnrepository.com
http://maven.ityuan.com
添加方式二:
如果添加的jar包在本地仓库中有(比如你之前在别的项目中使用过这个包)
添加方法是: 打开当前项目的pom.xml文件, 在pom文件中右键 --> Maven --> Add Dependency, 在弹出的窗口中输入要添加的依赖包。
如果本地仓库中没有这个jar包,必然搜索不到!
如果本地仓库中有这个jar包也搜索不到,解决方法是:打开 Maven repositories 窗口, 找到 Local Repository, 在这个选项上右键 --> Rebuild Index (重建索引)
5: Maven其他
-
5.1.Maven常见问题
如果通过maven创建的项目结构不完整, 或者后期在引入jar包时, jar包引入失败, 可以参考如下解决方法:
1)确保当前网络环境是否能连接上所配置的远程仓库,接着进行第2步。
2)在项目的pom文件中敲一个空白行,再保存文件。(目的是让maven检测到pom文件发生了变化,再根据pom文件中的配置,到本地仓库中寻找对应的jar包,如果没有相应的jar包,maven会重新下载)
3)接着在项目上,右键 --> Maven --> Update Project…,在弹出的窗口中勾选下方的 “[]Force Update…”,即强制更新项目,此时maven也会检查pom文件,下载没有引入的相关依赖。
4)如果以上操作还是不行,到本地仓库的目录下,将本地仓库中所有的目录都删除,删除时,由于eclipse正在使用本地仓库中的资源文件,所以会阻止删除,此时将eclipse关闭,再将本地仓库中的所有目录删除,重启eclipse。
5)启动eclipse后,再将上面的第(2)步和第(3)步再做一遍! -
5.2: Maven的本地库支持复制
如果因为网络问题导致无法通过maven下载所需要的依赖,可以将别的电脑上、已经下载好的本地库,复制到我们的本地库中。在复制之前, 先将自己本地库目录中的所有内容全部删除(如果删除不了就关闭eclipse再删除)