一、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)如果是有网络:能够不配置,默认连贯地方仓库,也能够配置连贯阿里云的仓库,或者连贯你们公司本人的近程仓库。
留神:如果连贯阿里云仓库,不能够应用手机热点网络!
配置办法:找到{maven的装置目录}/conf/settings.xml文件,在settings文件的<mirrors>标签外部,通过增加<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进行了整合,再批改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步!
四、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
http://maven.ityuan.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)步再做一遍!