前言
灵魂三问,在哲学和个人对话中通常用来探索一个人内心深处想法和感受的三个关键问题。
- 你是谁?
- 你从哪里来?
- 要带哪里去?
通过三个问题,我们能快速的了解对方身份、性格特点;地域环境、文化背景;个人目标、未来规划等。
那么,在学习一项技术时,不妨试试通过灵魂三问(它是什么?它能干什么?为什么要用?)来了解。
maven灵魂三问
1. maven是什么?
Maven 是一个基于项目对象模型的Java项目管理和构建自动化工具,它提供了一种标准化的方式来管理项目的构建过程、依赖关系、文档生成、报告以及部署等任务。通过约定大于配置的原则,简化了项目的构建过程,并提供了丰富的插件系统来扩展其功能。
2. maven能干什么?
a. 依赖管理:自动下载和管理项目所需的文件和插件,这些库文件通常存储在远程仓库中。这简化了开发者手动查找和添加依赖的过程。
b. 构建自动化:定义和执行标准的构建生命周期,包括编译、测试、打包、部署等,使得不同项目之间的构建流程更加一致。
c. 项目结构标准化:定义了一套标准的项目结构,通过使用 pom.xml 文件来描述项目信息及其依赖项,便于团队协作和项目维护。
d. 插件机制:提供了丰富的插件支持,可以很容易地扩展其功能,开发者也可以编写自定义插件。
e. 多模块项目管理:支持多模块项目的构建和管理,每个模块都可以独立构建,便于模块化开发、代码复用、维护和扩展。
3. 为什么用maven?
使用maven可以帮助我们处理第三方依赖,及传递依赖。 规范项目结构,更高效地管理Java项目,减少重复劳动,让团队能够专注于核心业务逻辑的开发。
怎么使用maven?
一. 安装Maven
Windows下安装
- 检验java的jdk安装
echo %JAVA_HOME% 查看jdk版本及安装目录
java –version 执行java命令,检查jdk是否安装
- 下载Maven -> 安装 -> 设置环境变量
- 检验Maven安装情况
echo %M2_HOME% 查看Maven安装版本,是否指向正确路径
mvn –v 执行Maven脚本,检查安装情况
- Maven升级
下载新版本,更新环境变量指向新版本路径
Unix下安装
- 检验java的jdk安装
echo $JAVA_HOME 查看jdk版本及安装目录
java –version 执行java命令,检查jdk是否安装
- 下载 -> 解压安装
推荐做法(在安装目录旁平行创建一个符号链接,方便日后升级)
例:ln –s apache-maven-3.0 apache-maven
- 设置环境变量
设置M2_HOME环境变量指向符号连接apache-maven
例:export M2_HOME = /home/juven/bin/ apache-maven
把Maven安装目录下的bin文件夹添加到系统环境变量PATH中
例:export PATH = $PATH:$M2_HOME/bin
- 检验Maven安装情况
echo $M2_HOME% 查看Maven安装版本,是否指向正确路径
mvn –v 执行Maven脚本,检查安装情况
- Maven升级
将要升级的版本解压到与之前版本平行的目录,更新符号连接指向新版本目录
例:从3.3升级3.5
rm apache-maven
ln –s apache-maven-3.5 apache-maven
设置http代理
有时基于安全考虑,需要通过安全认证的代理访问因特网,需要为Maven配置http代理,才能正常访问外部仓库下载资源
1. (确认无法直接访问公共Maven中央仓库)
ping repol.maven.org
2. 检查代理服务器是否畅通
例:telnet 192.168.3.157 3128
3. 编辑~/.m2/settings.xml文件,添加配置:
(若没有可复制conf/settings.xml。为什么不直接修改conf/settings.xml?因为conf/settings.xml文件是全局范围的,整台机器上的所有用户都会受到影响,而.m2/settings.xml文件是用户范围的,只有当前用户受影响并且便于升级)
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>192.168.3.157</host>
<port>3128</port>
<!--
<username>proxyuser</username>
<password>proxypass</password>
<nonProxyHosts>local.net|*.host.com</nonProxyHosts>
-->
</proxy>
</proxies>
如果声明多个proxy元素,默认情况下第一个生效,active值为true时代表激活该代理。Protocol指的是代理协议,当代理需要认证时需配置username,password。nonProxyHosts标识那些主机名不需要代理,可使用|分隔多个主机名,可使用通配符*标识以.com结尾的域名
配置用户范围
Maven用户可以选择配置$M2_HOME/conf/settings.xml或者~/.m2/settings.xml,前者是全局范围,后者是用户范围,只有当前用户才会收到该配置的影响。
推荐使用用户范围的配置修改,避免无意识地影响系统其它用户,同时也方便升级。
☆欢迎关注公众号: FC464782123