什么是mvn
- maven是一个优秀的构建工具,能够帮助我们自动化构建过程,从清理、编译、测试、打包、和部署项目。
- maven是跨平台的。可以在windows linux、Macos上运行。
- 不仅仅是构建工具,还可以管理项目依赖及项目信息,如项目描述、开发者列表、版本控制系统地址、许可证、等。
- maven还为全世界的开发者提供了一个免费的中央仓库。在这里几乎可以找到所有的java类库。
- maven对项目的目录、测试用例的目录、资源文件的存储位置都有自己的规则,遵守这些规则可以减少项目的学习成本。约定优于配置。
mvn与ant Make等构件工具的区别
Make:通过一系列的目标和依赖将整个构件串联起来,使用本地命令将构件过程串联起来,Make的强大之处是可以使用系统的命令,但是它和操作系统绑定在一起了,不能实现跨平台。
Ant:ant是过程式的,跨平台的,但是没有依赖管理功能,所有的依赖都需要程序要自己解决,
Maven:是声明式的,跨平台的,有依赖管理功能,更适合管理java项目。
mvn安装目录分析
- bin 存储mvn的运行脚本
- conf 存储配置文件,该目录包含一个settings.xml文件,修改此文件能在全局定制mvn的行为。
- lib 存储mven运行时所需要的类库
- boot 只有一个plexus-classworlds-2.5.2.jar文件,是一个类加载器框架,mvn使用此加载器加载自己的类库。
mvn代理配置
有时候所在公司基于安全因素的考虑,要求使用通过安全认证的代理访问外网,这种情况下,需要为mvn配置http代理,才能访问外部仓库来下载资源。
编辑settings.xml配置文件
<proxies>
<proxy>
<id>my-proxy</id> ##代理id
<active>true<active> ## 是否激活
<protocol>http</protocol> ##代理协议
<host>218.14.227.197</host> ##
<port>3128</port>
<username>***</username>
<password>***</password>
<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
<proxy>
</proxies>
proxies 下可以有多个proxy元素,如果配置了多个,默认第一个被激活的代理生效;
当代理需要认证时,需要配置username和password元素
nonProxyHost指定哪些主机名不需要代理,可以使用 | 符号分割多个主机名;也可以使用通配符表示所有以google.com结尾的域名访问都不需要代理。
mvn安装最佳实战
- 配置MAVEN_OPTS环境变量,运行mvn实际运行的时java命令,通过设置MAVEN_OPTS的环境变量,可以设置mvn进程的jvm参数,如-Xms128m -Xmx512m设置堆的大小,防止构架大的项目导致内存溢出
- 配置用户范围的settings.xml文件
用户可以配置$M2_HOME/cong/settings.xml或者~/.m2/settings.xml。前者是全局范围的,后者是用户范围的。使用用户范围的settings.xml方便升级。