Maven简介与安装
何为Maven
什么是maven?
Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
使用Maven的好处?
- 项目构建:自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。Maven抽象了一个完整的构建生命周期模型;标准化构建过程。
- 依赖管理:通过坐标系统准确地定位每一个构件(artifact),也就是通过一组坐标Maven能够找到任何一个Java类库(如jar文件)。
- 项目信息管理:管理项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。除了直接的项目信息,通过Maven自动生成的站点,以及一些已有的插件,还可以轻松地获得项目文档、测试报告、静态分析报告、源码版本日志报告等非常具有价值的项目信息。
- 为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。
- 对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置。
为什么选择Maven
什么是Make?和Make的对比?
Make也许是最早的构建工具,具体不详,没用过,可以不了解.Make的强大之处在于它可以利用所有系统的本地命令,尤其是UNIX/Linux系统,丰富的功能、强大的命令能够帮助Make快速高效地完成任务。
对比:
- 使用Make,就不能实现(至少很难)跨平台的构建,这对于Java来说是非常不友好的
- Makefile的语法也成问题,很多人抱怨Make构建失败的原因往往是一个难以发现的空格或Tab使用错误。
什么是Ant?和Ant的对比?
可以将Ant看成是一个Java版本的Make,也正因为使用了Java,Ant是跨平台的。此外,Ant使用XML定义构建脚本,相对于Makefile来说,这也更加友好。
对比:
- 和Make一样,Ant也都是过程式的,开发者显式地指定每一个目标,以及完成该目标所需要执行的任务。针对每一个项目,开发者都需要重新编写这一过程,这里其实隐含着很大的重复。Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素,Maven就执行内置的、完整的构建过程。这在很大程度上消除了重复。
安装
目录结构和内容?
- Bin:该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。
- Boot:maven默认的类加载器,相对于默认的java类加载器,它提供了更丰富的语法以方便配置。
- Conf:该目录包含了一个非常重要的文件settings.xml。直接修改该文件,就能在机器上全局地定制Maven的行为。
- Lib:该目录包含了所有Maven运行时需要的Java类库
什么情况下需要设置代理?
- 提高访问速度:通常代理服务器都设置一个较大的缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。
- 隐藏真实身份:上网者也可以通过代理服务器隐藏自己的真实地址信息,还可隐藏自己的IP,防止被黑客攻击。
- 突破限制:有时候网络供应商会对上网用户的端口,目的网站,协议,游戏,即时通讯软件等的限制,使用代理服务器都可以突破这些限制。
- 安全认证
如何设置代理?
在setting.xml中配置:1
2
3
4
5
6
7
8
9
10<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
mvn命令实际上是一个java进程,当项目较大时,如果运行内存不足,也会出现异常,怎么处理?
使用Mvn命令时设置MAVEN_OPTS环境
配置用户所属的setting.xml文件的好处?
- 避免影响其他用户
- conf下的setting.xml每次更新就会重置
使用IDE自带的Maven会有什么问题?
- 自带的通常比较新,不一定很稳定
- ide中的Maven和命令行的Maven版本如果不一定,可能会出现构建问题