Maven(笔记整理)

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再删除)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值