介绍
maven是一种全新的项目构建方式,让我们的开发更加简单,高效。Maven主要做的是两件事:
统一开发规范与工具
统一管理jar包
这两件事情他都做到了,而且还做了更多的事情。Maven还可以管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制项目。
工欲善其事,必先利其器。咱们也来玩玩 Maven 这货吧!先得去下载一个。
准备工作
java开发环境(JDK)
安装
安装maven超级简单,总共分四步:
下载 Maven ,其实就是一个压缩包,解压一下
配置一下环境变量
有两个环境变量可以配置:
MAVEN_HOME = D:\maven\apache-maven-3.2.3
MAVEN_OPTS = -Xms128m -Xmx512m(可选)
- 在path变量末尾加入“%MAVEN_HOME%\bin;”。
以上M2_HOME 是必须要配置的,如果想让 Maven 跑得更快点,可以根据自己的情况来设置MAVEN_OPTS
。
- 最后,验证是否安装成功
现在我们打开 cmd,输入:
mvn -v
可以查看maven版本
在使用 Maven 之前,我们必须要了解一下 Maven 到底是怎样管理 jar 包的,这就是 Maven 仓库要干的活了。
了解Maven仓库
使用 Maven 给我们带来的最直接的好处,就是统一管理jar包,那么这些jar包存放在哪里呢?它们就在您的本地仓库中,默认地址位于* C:\Users\用户名.m2 *目录下(当然也可以修改这个默认地址),下面我们就修改一下这个默认地址。
实际上我们可以将本地仓库理解“缓存”,目的是存放jar包。开发项目时项目首先会从本地仓库中获取 jar 包,当无法获取指定 jar 包的时候,本地仓库会从 远程仓库(或 中央仓库)中下载 jar 包,并“缓存”到本地仓库中以备将来使用。
远程仓库(中央仓库)是 Maven 官方提供的,可通过 http://search.maven.org/ 来访问。这样一来,本地仓库会随着项目的积累越来越大。通过下面这张图可以清晰地表达项目、本地仓库、远程仓库之间的关系。
既然 Maven 安装了,那么本地仓库也就有了,默认路径在我们C盘目录下,对于专业人士来说C盘很危险,下面我们修改一下默认配置。
配置本地仓库
本地仓库,顾名思义,就是Maven在本地存储构件的地方。Maven会将下载的类库(jar包)放置到本地的一个目录下,如果想重新定义这个目录的位置就需要修改Maven本地仓库的配置:
注:maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建
maven本地仓库的默认位置:无论是Windows还是Linux,在用户的目录下都有一个.m2/repository/
的仓库目录,这就是Maven仓库的默认位置。
更改配置用户范围的本地仓库:
先将M2_HOME/conf/settings.xml
复制到/.m2/目录下,然后在~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\maven\repository</localRepository>
</settings>
这时候,maven的本地仓库地址就变成了 D:\maven_new_repository
注:此时配置的maven的本地仓库是属于用户范围的。
更改配置全局范围的本地仓库:
在M2_HOME/conf/settings.xml
中更改配置,更改配置的方法同上
**注:此时更改后,所有的用户都会受到影响,而且如果maven进行升级,那么所有的配置都会被清除,所以要提前复制和备份M2_HOME/conf/settings.xml文件
故:一般情况下不推荐配置全局的
settings.xml**
依据该配置,Maven就会将下载的类库保存到D:\maven\repository
中。
实验一下我们刚才做的事情产生作用没有,控制台输入:
mvn help:system
如果没有任何问题,执行完该命令之后,在D:\maven\repository
下面就会多出很多文件,这些文件就是maven从中央仓库下载到本地仓库的文件,maven已经开始为我们工作了。
安装m2eclipse插件
Eclipse是一款非常优秀的IDE。除了基本的语法标亮、代码补齐、XML编辑等基本功能外,最新版的Eclipse还能很好地支持重构,并且集成了JUnit、CVS、Mylyn等各种流行工具。可惜Eclipse默认没有集成对Maven的支持。幸运的是,由Maven之父Jason Van Zyl创立的Sonatype公司建立了m2eclipse项目,这是Eclipse下的一款十分强大的Maven插件,可以访问 M2Eclipse官网 了解更多该项目的信息。
安装步骤:
启动Eclipse之后,在菜单栏中选择Help,然后选择Install New Software…
接着你会看到一个Install对话框,点击Work with:字段边上的Add按钮,你会得到一个新的Add Repository对话框
在Name字段中输入
m2e
,Location字段中输入 http://download.eclipse.org/technology/m2e/releases ,然后点击OK。Eclipse会下载m2eclipse安装站点上的资源信息
、
配置m2eclipse
1. 配置maven安装目录
依次打开
Window –> Perferences –> Maven
,展开Maven的配置界面;然后点击
Installations –> add
选择maven安装目录,这里我的Maven安装目录为D:\maven\apache-maven-3.2.3,选择你的Maven安装目录,并点击确定, 之后可以点击Apply,点击OK,即可完成我们在Maven的配置界面,设置User Settings
Global Settings选择maven 安装目录下conf文件夹下的settings.xml,这里我的Maven安装目录为D:\maven\apache-maven-3.2.3\conf\settings.xml
,选择你的Maven安装目录。检查Local Repository 项,如果为 D:/maven/repository
则配置成功,否则重新配置上一步。
恭喜你,现在我们已经配置好了eclipse,下面,我们可以创建maven项目了
。
Maven安装最佳实践
本节介绍一些在安装Maven过程中不是必须的,但十分有用的实践。
1. 设置MAVEN_OPTS环境变量
我们通常需要设置MAVEN_OPTS的值为:-Xms128m -Xmx512m
,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,我们很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。
关于如何设置环境变量,请参考前面设置M2_HOME环境变量的做法,尽量不要直接修改mvn.bat或者mvn这两个Maven执行脚本文件。因为如果修改了脚本文件,升级Maven时你就不得不再次修改,一来麻烦,二来容易忘记。同理,我们应该尽可能地不去修改任何Maven安装目录下的文件。
2. 配置用户范围settings.xml
Maven用户可以选择配置$M2_HOME/conf/settings.xml
或者~/.m2/settings.xml
。前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。
我们推荐使用用户范围的settings.xml,主要原因是为了避免无意识地影响到系统中的其他用户。当然,如果你有切实的需求,需要统一系统中所有用户的settings.xml配置,当然应该使用全局范围的settings.xml。
除了影响范围这一因素,配置用户范围settings.xml文件还便于Maven升级。直接修改conf目录下的settings.xml会导致Maven升级不便,每次升级到新版本的Maven,都需要复制settings.xml文件,如果使用~/.m2目录下的settings.xml,就不会影响到Maven安装文件,升级时就不需要触动settings.xml文件。
3. 不要使用IDE内嵌的Maven
无论是Eclipse还是NetBeans,当我们集成Maven时,都会安装上一个内嵌的Maven,这个内嵌的Maven通常会比较新,但不一定很稳定,而且往往也会和我们在命令行使用的Maven不是同一个版本。这里有会出现两个潜在的问题:
首先,较新版本的Maven存在很多不稳定因素,容易造成一些难以理解的问题;
其次,除了IDE,我们也经常还会使用命令行的Maven,如果版本不一致,容易造成构建行为的不一致,这是我们所不希望看到的。因此,我们应该在IDE中配置Maven插件时使用与命令行一致的Maven。
安装Maven后每次启动出现警告信息:
Eclipse is running in a JRE, but a JDK is required
Some Maven plugins may not work when importing projects or updating source folders.
分两步解决问题:
- 检查Eclipse正在使用的JRE
‘Window’ -> ‘Preferences’ -> ‘Java’ -> ‘Installed JREs’ 确定正在使用JDK而非JRE.
如果没有JDK, 则先新增一个Standard VM.
- 配置Eclipse.ini
检查Eclipse配置文件, 增加/编辑以下代码:
-vm
C:\Progra~1\Java\jdk1.8.0_77\bin\javaw.exe
注意事项:
第一行参数名称, 第二行为值, 不能写到同一行中
关于第二行的值, 因为不允许出现空格, 所以使用Progra~1或2 替代”Program Files (x86)”.如果在Program Files下, 请使用Progra~1, 如果在x86下, 则使用Progra~2
在文件中的位置, 不能放到最后(不能在-vmargs之后), 不放心的直接放到文件最前, 如:
-vm
C:\Progra~1\Java\jdk1.8.0_77\bin\javaw.exe
-startup
.....
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms240m
-Xmx912m
- 重启Eclipse, 警告不再出现.