maven

学习目标:
1)了解Maven及Maven的作用
2)掌握maven的配置(本地仓库/远程仓库/JDK版本/maven和eclipse整合)
3)掌握使用maven创建Java项目和Web项目
4)掌握导入已有的Maven项目
5)了解Maven的三种仓库(本地仓库/远程仓库/中央仓库)
6)了解Maven是如何管理依赖的
7)掌握如何在maven项目添加依赖

一、Maven的概述
1、什么是Maven?
	Maven是apache下的一个纯Java开发的开源项目
	Maven是一个项目管理工具,可以简化项目配置,统一项目结构,使得开发者的工作变得更简单!
	使用Maven的主要原因,是Maven可以帮我们下载和管理项目中所需要的依赖(jar包)

二、Maven的下载/安装/配置
1、下载、安装Maven
	官方下载地址:http://maven.apache.org/download.cgi
	maven是一个绿色软件,解压之后就可以使用。
	安装时推荐,安装的路径中不要包含中文和空格

2、配置本地仓库
	2.1.什么是本地仓库
		本地仓库就是本地硬盘上的一个目录,这个目录用于存放Maven帮我们下载的所有jar包和插件。
		如果不指定,本地仓库默认是在(windows系统):c:/users/{当前用户}/.m2/repository

	2.2.修改本地仓库的默认位置
		找到 {maven的安装目录}/conf/settings.xml文件,在settings文件的55行,添加如下内容:
		<localRepository>d:/javaDevelop/localRepo</localRepository>
		修改完后,以后通过maven下载的所有jar包和插件都会存放在这个位置:
			d:/javaDevelop/localRepo

3、配置远程仓库
	3.1.什么是远程仓库
		如果没有配置远程仓库,默认连接中央仓库,也就是maven将会从中央仓库下载jar,再保存到本地仓库中。
		但由于中央仓库面向的是全球用户,所以下载jar包速度较慢!
		远程仓库(镜像仓库、私服): 一般是由公司(或个人)负责搭建并维护,如果配置了远程仓库,maven就会从远程仓库下载所需要的jar包,并保存到本地仓库中。
		
	3.2.如何配置远程仓库
		(1)如果是在家里(有外网),或者以后去公司上班后:可以不配置,默认连接中央仓库,也可以配置连接阿里云的仓库,或者连接你们公司自己的远程仓库。
			注意:如果连接阿里云仓库,不可以使用手机热点网络!
		(2)如果在达内(使用的是达内内网):可以配置连接达内的远程仓库
			注意:回到家里,或者以后去公司,连接不了达内的远程仓库(没有对外开放,没有内网访问不了)
		
		配置方法:找到{maven的安装目录}/conf/settings.xml文件,在settings文件的<mirrors>标签内部,通过添加<mirror>标签,可以配置远程仓库。
		例如:达内的远程仓库配置:
		<mirror>
		    <id>nexus-tedu</id>
		    <name>Nexus tedu</name>
		    <mirrorOf>central</mirrorOf>
		    <url>http://maven.tedu.cn/nexus/content/groups/public/</url>
		</mirror>
		
		阿里云的远程仓库配置:
		<mirror>
			<id>nexus-aliyun</id>
			<name>Nexus aliyun</name>
			<mirrorOf>central</mirrorOf>
			<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
		</mirror>
	
4、配置JDK版本
	因为在maven和eclipse整合后,通过eclipse创建的maven项目,其中的JDK版本默认是JDK1.5(太旧)
	可以在{maven的安装目录}/conf/settings.xml文件中配置JDK的版本,配置后,以后再创建maven项目,项目中的JDK版本就是我们指定的版本。而不是JDK1.5。
	配置方法是:在{maven的安装目录}/conf/settings.xml文件的<profiles>标签内部,添加一个<profile>标签。如下:
	<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>

5、整合Maven和Eclipse
	参考讲义《将Maven配置到Eclipse中》

	如果已经将Maven和Eclipse进行了整合,再修改settings.xml文件,如果想让修改的配置立即生效,可以重启Eclipse。
	
三、Maven的项目构建
0、通过Maven构建Java项目分为两种方式:
	方式一:通过Maven创建简单工程/项目(new simple project)
		(1)通过Maven创建简单的Java工程
		(2)通过Maven创建简单的Web工程
	方式二:通过Maven创建模板工程/项目
		(1)通过模板创建Java工程
		(2)通过模板创建Web工程
1、通过Maven创建一个Java项目:CGB-MAVEN-JAVA01

2、通过Maven创建一个Web项目:CGB-MAVEN-WEB01
	注意:通过maven创建的Web项目默认缺少 WEB-INF目录,也缺少web.xml文件,解决方法是:
	在[Package Explorer]视图窗口中,在Web项目上-->右键-->选择:JavaEE Tools-->选择:Generate Deployment...,webapp目录下就会生成WEB-INF目录和web.xml文件
	
3、Maven项目的目录结构
	CGB-MAVEN-WEB01(maven项目的名字)
		|-- src/main/java(源码目录) -- 用于存放主程序/项目的java源文件
		|-- src/main/resources(源码目录) -- 用于存放主程序所需要的配置文件(.xml/.propertes/.yml等)
		|-- src/test/java(源码目录) -- 用于存放测试的java源文件
		|-- src/test/resources(源码目录) -- 用于存放测试的配置文件
		|-- src/main/webapp -- Web应用的根目录,相当于WebContent目录
				将来可以存放Web资源文件(html/css/js/jsp/图片等)
		|-- src/main/webapp/WEB-INF/web.xml -- Web应用的核心配置文件
		|-- target/classes/ -- 源码目录中的资源文件经过编译后,会输出到classes目录下
		|-- pom.xml -- maven项目的配置文件,如果需要引入jar包、插件,可以在这个文件中进行引入
	
4、如何导入已有的Maven项目
	1) 导入数据库(yonghedb)、表、表记录
	2) 导入yonghe项目
	注意:在导入项目后,项目上有叉号(x)或者有叹号(!),都是因为maven没有将所有的环境/依赖下载下来。
	可以通过如下三个步骤去解决:
	1)打开yonghe项目,找到其中的pom.xml文件,在文件中敲一个空白行并保存,让maven重新扫描pom文件,并根据其中的配置下载所需要的依赖;
	2)在报错的maven项目上右键--> Maven--> Update Project...,在弹出的窗口中勾选下方的
		[]Force Update...
		即勾选强制更新,如果还没有解决,再看第3步!
	3)下载老师下发的本地仓库(localRepo(maven的本地库).zip,在第二阶段软件中有)
		用老师下发的本地仓库,替换自己的本地仓库!

	运行导入的yonghe项目,在项目上右键--> Run As --> Run On Server,在打开的浏览器地址栏后面补全路径: http://localhost:8080/yonghe/index
	/index对应的是controller中的一个方法,最后会跳转到index.jsp

四、maven的依赖管理
1、如何在Maven项目中引入jar包(依赖)
	不需要将jar包复制到当前项目中,而是在pom.xml文件中添加这个jar包对应的坐标,比如,要添加mysql驱动包,只需要在pom文件的根标签(project)内部,添加一个<dependencies>标签,在<dependencies>标签内部添加一个mysql驱动包的坐标即可,如下所示:
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.32</version>
	</dependency>
	
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>servlet-api</artifactId>
		<version>2.5</version>
	</dependency>
	
2、引入到Maven项目中的jar包,存放在哪个位置?
	引入到Maven项目中的jar包,存放在本地仓库的指定位置下,这个位置就是【本地仓库位置+当前依赖的坐标】
	(前面说过,本地仓库就是本地硬盘上的某一个目录,就是用来存放maven帮我们下载的所有jar包和插件)

3、本地仓库中的jar包是从哪儿来的?
	如果没有配置远程仓库,本地仓库中的jar包是maven帮我们从中央仓库下载下来的。
	如果配置了阿里云的远程仓库,本地仓库中的jar包是maven帮我们从阿里云仓库下载下来的
	1)本地仓库:其实就是本地硬盘上的某一个目录,用于存放maven帮我们下载的所有jar包和插件
		当我们在项目中引入了依赖,就会到本地仓库中根据坐标寻找这个依赖(jar包)
		如果本地仓库中有,则直接引入到项目中使用;
		如果本地仓库中没有,则连接远程仓库(如果配置了),或者连接中央仓库。
	2)远程仓库:也叫作镜像仓库或者私服,由公司或个人负责搭建,如果在maven中配置了远程仓库,当本地仓库中没有某一个jar包时,就会连接远程仓库进行下载。远程仓库若没有,则连接中央仓库去下载。
	3)中央仓库:由maven团队负责搭建并维护,其中包括了全世界几乎所有的jar包,面向的用户是全球用户,因此在连接中央仓库时,速度会比较慢。
	
4、如何在pom文件中添加依赖?
4.1.添加依赖的方式一:
	如果添加的依赖包在本地仓库中有(比如之前在别的项目中引入过这个依赖包)
	添加方法: 打开pom文件,在pom文件中右键--> Maven --> Add dependency,在弹出的窗口中输入要添加的依赖包。
	如果本地仓库中没有这个jar包,必然会搜索不到!
	如果本地仓库中有这个jar包也搜索不到,解决方法是:打开 Maven Repositories 窗口, 找到 Local Repository,在上面右键 ReBuild Index(即重建索引), 重建索引后再去搜索。
	
4.1.添加依赖的方式二:
	如果添加的依赖包在本地仓库中没有,可以在互联网上进行搜索依赖的坐标,并把坐标复制到pom文件中
	http://mvnrepository.com
	
五、maven的常见问题
1、Maven的本地库支持复制
	如果因为网络问题导致无法通过maven下载所需要的依赖,可以将别的电脑上、已经下载好的本地库,复制到我们的本地库中。
	
2、如果通过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)步再做一遍!
	6)如果还是不行,就使用老师下发的本地仓库替换你的本地仓库!

 

posted @ 2020-11-19 19:31  Liang-shi  阅读(112)  评论(0编辑  收藏  举报