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)如果还是不行,就使用老师下发的本地仓库替换你的本地仓库!