MAVEN
Posted 吕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)如果是有网络:可以不配置,默认连接中央仓库,也可以配置连接阿里云的仓库,或者连接你们公司自己的远程仓库。
注意:如果连接阿里云仓库,不可以使用手机热点网络!
配置方法:找到{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)步再做一遍!
以上是关于MAVEN的主要内容,如果未能解决你的问题,请参考以下文章
Spring+SpringMVC+MyBatis+Maven框架整合
关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段
如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?