一、概念:
1、Maven是一跨平台的项目管理工具,在Windows,Linux或Mac上都可以使用同样的命令。
2、Maven 的主要作用是帮我们自动化、标准化构建项目,从清理、编译、测试到生成报告,再到打包和部署。Maven最大化的消除了构建的重复,抽象了构建声明周期,并且为绝大部分的构建任务提供了已有的插件,我们不在需要定义过程,甚至不需要再去实现这些过程中的一些任务。
3、Maven还是一个依赖管理工具和项目信息管理工具:我们在开发过程中借用第三方的开源类库时,可以通过依赖的方式将类库引用到项目中。但随着依赖的增多,版本不一致,版本冲突,依赖臃肿等问题都会接踵而来。Maven通过一个坐标系统准确定位每个构件(artifact),也就是通过一组坐标Maven能够找到任何一个java类库(如jar文件),解决了人们手工处理依赖问题的烦恼。坐标包括group ID,artifactID和 version。打开任意Maven项目的pom文件,都可以看见这些坐标。
关于pom:maven pom文件详解
来自 <http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html>
4、Maven提供了免费的中央仓库帮我们自动下载构件。通过Maven的衍生工具(如Nexus),我们能对其进行快速搜索。只要定位坐标,Maven就能帮我们自动下载,省去手工劳动。
5、与Maven类似的工具还有:Make,Ant。但因为Maven的可跨平台的构建,简单的语法,内置依赖管理,拥有全世界最多的java开源软件包的中央仓库,用户无需进行任何配置就可以直接享用等优点,使得Maven脱颖而出。
二、安装Maven后产生的一些文件:
~/.m2:在用户目录下可以发现.m2文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/respository。所有的Maven构件都被存储到该仓库,以便重用。
如果所在公司基于安全因素考虑,要求使用通过安全认证的代理访问因特网。这种情况下,需要为Maven配置Http代理,才能让它正常访问外部仓库,以下载所需资源。
三、Maven安装最佳实践:
1、设置Maven_OPTS环境变量
根据Maven安装目录,我们了解到,运行mvn命令实际上是执行了Java命令,既然运行java,运行java命令可用的参数当然也应该在运行mvn命令时可用。这时候,MAVEN_OPTS环境变量就能派上用场。
配置参考:
1)设置MAVEN_OPTS环境变量
通常需要设置MAVEN_OPTS的值为-Xms128m-Xmx512m,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。
2)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文件。
来自 <http://book.51cto.com/art/201011/234381.htm>
3、不要使用IDE内嵌的Maven
eclipse中有内嵌的maven,这个内嵌的maven通常会比较新,但不一定很稳定,而且往往会和在命令行使用的maven不是同一个版本。通常会存在两个潜在的问题:
1)较新的maven存在很多不稳定因素,容易造成一些难以理解的问题
2)除了IDE,也经常会使用命令行的maven,如果版本不一致容易造成构建行为的不一致。
来自 <https://blog.csdn.net/miss_yinghao/article/details/78782489>
参考:
《Maven 实战》许晓斌
上述链接的CSDN博客