maven_01_简介及安装
一、简介
Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理
- 何为构建
除了编写源代码,我们每天有相当一部分时间花在了编译、运行单元测试、生成文档、打包和部署等烦琐且不起眼的工作上,这就是构建。
二、安装
1.检查JDK安装
执行如下命令,检查JDK的安装情况
echo %JAVA_HOME%
java -version
2.maven安装
(1)去官网下载maven,解压,
(2)然后设置环境变量(建议设置用户环境变量)
M2_HOME=C:\dev-env\Maven\apache-maven-3.5.4
PATH=%M2_HOME%\bin
(3)验证
echo %M2_HOME%
mvn -v
三、基础知识
1.安装目录分析

| 目录 | 分析 |
|---|---|
| bin | (1)该目录包含了mvn运行的脚本,(2)这些脚本用来配置Java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。 |
| boot | 包含一个类加载器框架:plexus-classworlds-2.5.2.jar |
| conf | (1)包含一个全局配置文件 settings.xml ,(2)一般情况下,推荐将该文件复制到 ~/.m2/ 目录下,然后修改该文件,在用户范围定制Maven的行为。 |
| lib | 包含所有maven运行时需要的Java类库 |
2.设置HTTP代理
若想使Maven通过代理服务器来下载jar包,则需要为Maven配置HTTP代理
2.1 确认代理服务器畅通
telnet ip 端口
如果telnet连接正确,则输入ctrl+],然后q,回车,退出即可。
2.2 修改用户配置
检查完毕之后,编辑 ~/.m2/settings.xml 文件(如果没有该文件,则复制 $M2_HOME/conf/settings.xml )。
添加代理配置如下:
<settings >
...
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>192.168.12.107</host>
<port>3128</port>
<!--
<username>proxyuser</username>
<password>proxypass</password>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
-->
</proxy>
</proxies>
...
</settings>
- 当代理服务需要认证时,就需要配置username和password。
- nonProxyHost元素用来指定哪些主机名不需要代理,可以使用“|”符号来分隔多个主机名。且可使用通配符 *
四、最佳实践
1.设置MAVEN_OPTS环境变量
运行mvn命令实际上是执行了Java命令,通过 MAVEN_OPTS 可设置 jvm参数。
通常需要设置MAVEN_OPTS的值为-Xms128m-Xmx512m,
因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。
2.配置用户范围settings.xml
| 配置文件 | 适用范围 | 描述 |
|---|---|---|
| $M2_HOME/conf/settings.xml | 全局范围 | 整台机器上的所有用户都会直接受到该配置的影响 |
| ~/.m2/settings.xml | 用户范围 | 只有当前用户才会受到该配置的影响 |
推荐使用用户范围的settings.xml,主要是:
- 避免无意识地影响到系统中的其他用户
- 方便Maven版本升级
3.不要使用IDE内嵌的Maven
原因:
- 版本新,可能不稳定
- 与命令行的maven不一致
因此,应该在IDE中配置Maven插件时使用与命令行一致的Maven。
maven_01_简介及安装的更多相关文章
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- Java Gradle入门指南之简介、安装与任务管理
这是一篇Java Gradle入门级的随笔,主要介绍Gradle的安装与基本语法,这些内容是理解和创建build.gradle的基础,关于Gradle各种插件的使用将会在其他随笔中介绍. ...
- 细细品味Storm_Storm简介及安装
Storm是由专业数据分析公司BackType开发的一个分布式实时数据处理软件,可以简单.高效.可靠地处理大量的数据流.Twitter在2011年7月收购该公司,并于2011年9月底正式将Storm项 ...
- VMware vSphere 5.1 简介与安装
虚拟化系列-VMware vSphere 5.1 简介与安装 标签: 虚拟化 esxi5.1 VMware vSphere 5.1 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...
- Nutch搜索引擎(第2期)_ Solr简介及安装
1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...
- Node.js的简介和安装
一.Node.js的简介和安装 a) 什么是Node.js? Node.js是一个开发平台 让JavaScript运行在服务器端的开发平台 ---简单点说就是用JavaScript写服务器 ...
- Nutch之简介与安装
初学Nutch之简介与安装 初学Nutch之简介与安装 1.Nutch简介 Nutch是一个由Java实 现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其 ...
- Nutch搜索引擎Solr简介及安装
Nutch搜索引擎(第2期)_ Solr简介及安装 1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的 ...
- DNN简介以及安装
开源框架DNN简介以及安装 donetnuke 是一款免费的开源cms框架,目前也有收费版,不过免费版也可以适应大家大部分的需求.我前些阵子是老板让我在20天内,做好一个官网并且发布,并且指定使用dn ...
随机推荐
- HDFS datanode心跳与运维中的实际案例
分布式系统的节点之间常采用心跳来维护节点的健康状态,如yarn的rm与nm之间,hdfs的nn与dn之间.DataNode会定期(dfs.heartbeat.interval配置项配置,默认是3秒)向 ...
- java字符串分割的小练习
最近看到一个网友的一个小问题,有关字符串分割的,思考了一下,后面给出代码:碰到一个java字符串判断结尾的问题,发现与c\c++以"\0"判断字符串结尾不同的是,java中字符串是 ...
- 在Ubuntu中启动./jmeter-server报错Server failed to start: java.rmi.RemoteException: Cannot start. ranxf is a loopback address.解决方法
执行失败错误信息: root@ranxf:/home/ranxf/apache-jmeter-3.1/bin# ./jmeter-server Writing log file to: /home ...
- weblogic控制台部署web项目图解
图解网址:http://jingyan.baidu.com/article/c74d6000650d470f6b595d72.html
- Jquery中val、text、html的区别
html就是你可以添加像<a></a>.<p></p>等标记text只能写文本如果写了上面的标记则会以文本形式输出val是属性,只有有该属性的对象才能调 ...
- Java学习第三周摘要
20145307<Java程序设计>第三周学习总结 教材学习内容总结 认识对象 类类型 Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型.sun就是一个类类型变量,类 ...
- 20145312 《Java程序设计》第六周学习总结
20145312 <Java程序设计>第六周学习总结 学习笔记 Chapter10 输入 /输出 10.1InputStream 与 OutputStream 10.1.1 串流设计的概念 ...
- 20145324 《Java程序设计》第3周学习总结
20145324 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 1.要产生对象必须先定义类,类是对象的设计图,对象是类的实例,建立实例要用new 2.参数名称与对象数据成员 ...
- 20145329《Java程序设计》第六周学习总结
教材学习内容总结 第十章 InputSream与OutputStream Java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对象为java.io.OutputStr ...
- 【前端】display: box布局教程 [转]
css display:box 新属性 一.display:box; 在元素上设置该属性,可使其子代排列在同一水平上,类似display:inline-block;. 二.可在其子代设置如下属性 ...