文档章节

Maven实战(一)Maven的安装与配置

 恒者
发布于 2014/04/01 00:27
字数 2226
阅读 2181
收藏 14

Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。

Maven的项目构建:自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。
    Maven抽象了一个完整的构建生命周期模型;标准化构建过程。

Maven的依赖管理:通过坐标系统准确地定位每一个构件(artifact),也就是通过一组坐标Maven能够找到任何一个Java类库(如jar文件)。

Maven的项目信息管理:管理项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。除了直接的项目信息,通过Maven自动生成的站点,以及一些已有的插件,还可以轻松地获得项目文档、测试报告、静态分析报告、源码版本日志报告等非常具有价值的项目信息。

Maven还为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。通过一些Maven的衍生工具(如Nexus),还能够对其进行快速地搜索。只要定位了坐标,Maven就能够帮我们自动下载。

使用Maven还能享受一个额外的好处,即Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(Convention Over Configuration)。


Maven实战(一)Maven的安装与配置
1.检查JDK的安装
安装好JDK(JDK1.4及以上版本)并设置好环境变量
打开命令行运行:
echo %JAVA_HOME%
java -version

2.下载Maven
http://maven.apache.org/ ,版本apache-maven-3.2.1-bin.zip

3.安装
解压到E:\dev\maven下

4.设置环境变量
M2_HOME:E:\dev\maven\apache-maven-3.2.1
PATH新增:;%M2_HOME%\bin

5. 检测安装是否成功
打开命令行运行:
echo %M2_HOME%
mvn -v
有相关信息显示说明安装成功。

6.安装目录分析
(1)M2_HOME
M2_HOME环境变量指向Maven的安装目录。该目录的结构和内容:
1)bin:该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统参数,然后执行Java命令。其中mvn是基于Unix平台的shell脚本,mvn.bat是基于Windows平台的bat脚本。在命令行中输入任何一条mvn命令时,实际上就是在调用这些脚本。该目录还包含了mvnDebug和mvnDebug.bat两个文件。那么mvn和mvnDebug有什么区别和关系呢?打开文件查看,可知两者基本一样,只是mvnDebug多了一条MAVEN_DEBUG_OPTS配置,其作用就是在运行Maven时开启debug,以便调试Maven本身。此外,该目录还包含m2.conf文件,这是classworlds的配置文件。
2)boot:该目录只包含一个文件,Maven3中该文件是plexus-classworlds-2.5.1.jar。plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。对于一般的Maven用户来说,不必关心该文件。
3)conf:该目录包含一个非常重要的文件settings.xml。直接修改该文件,就能在机器上全局地定制Maven的行为。一般情况下,我们更偏向于复制该文件至~/.m2/目录下(~表示用户目录),然后修改该文件,在用户范围定制Maven的行为。
4)lib:该目录包含了所有Maven运行时需要的Java类库,Maven本身是分模块开发的,因此用户能看到诸如maven-core-3.2.1.jar、maven-model-3.2.1.jar之类的文件。此外,还包含一些Maven用到的第3方依赖,如common-cli-1.2.jar、guava-14.0.1.jar等。
5)LICENSE.txt:记录了Maven使用的软件许可证Apache License Version 2.0。
6)NOTICE.txt:记录了Maven包含的第三方软件。
7)README.txt:包含了Maven的简要介绍,包括安装需求及如何安装的简要指令等。

(2)~/.m2
命令:
mvn help:system
该命令会打印出所有的Java系统属性和环境变量,这些信息对日常编程工作很有帮助。
该命令会让Maven执行一个真正的任务,从命令行输出可知Maven会下载一些pom文件和jar文件,这些文件都是从Maven的中央仓库下载到Maven的本地仓库的。

当前的用户目录:
Windows XP:C:\Documents and Settings\huhu
Windows 7:C:\Users\huhu
Unix/Linux:cd回车,就可以转到当前用户目录

~:表示当前用户目录。

在用户目录下可以发现.m2文件夹。默认情况下,该文件下放置了Maven本地仓库.m2/repository。所有的Maven构件都被存储到该仓库中,以便重用。Maven根据一套规则来确定任何一个构件在仓库中的位置。

默认情况下,~/.m2目录下除了repository仓库之外没有其他目录和文件了,不过大多数Maven用户需要复制M2_HOME/conf/settings.xml文件到~/.m2/settings.xml。这是一条最佳实践。

7.设置HTTP代理
有时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这时就需要为Maven配置HTTP代理,才能让它正常地访问外部仓库,以下载所需要的资源。
编辑~/.m2/setting.xml文件中如下(如果没有该文件,则复制$M2_HOME/conf/setting.xml)

<settings>
    <proxies>  
        <proxy>
            <id>my-proxy</id>
            <active>true</active>
            <protocol>http</protocol>
            <host>218.14.227.197</host>
            <port>3128</port>
            <!--
            <username>proxyuser</username>
            <password>proxypass</password>
            <nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
            -->
        </proxy>
     </proxies>
</settings>

这段配置十分简单,proxies下可以有多个proxy元素,如果声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。
这里声明了一个id为my-proxy的代理,
active的值为true表示激活该代理,
protocol表示使用的代理协议,这里是http。
当然,最重要是指定正确的主机名(host元素)和端口(port元素)。
上述XML配置中注释掉了username、password、nonProxyHost几个元素。
当代理服务需要认证时,就需要配置username和password。nonProxyHost元素用来指定哪些主机名不需要代理,可以使用"|"符号来分隔多个主机名。此外,该配置也支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不需要通过代理。

8.安装Eclise的Maven插件
Eclipse 4.3(Kepler)默认安装Maven插件。
在Eclipse中,单击菜单栏-File-New-Maven Project,就可以创建Maven项目。

9.Maven安装最佳实践
(1)设置MAVEN_OPTS环境变量
运行mvn命令实际上是执行了java命令,既然是运行java,那么运行java命令可用的参数也应该在运行mvn命令时可用。这个时候MAVEN_OPTS环境变量就能派上用场。
通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx512m,因为java默认的最大可用内存往往不能满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此。推荐开始就设置该环境变量。

关于设置环境变量,参考设置M2_HOME环境变量的做法,尽量不要直接修改mvn或mvn.bat这两个Maven执行脚本文件。因为修改了脚本文件,升级Maven时,就必须再次修改,比较麻烦,也容易忘记。
同理,应该尽可能地不要去修改Maven安装目录下的任何文件。

(2)配置用户范围settings.xml
Maven用户可以选择配置$M2_HOME/conf/settings.xml或~/.m2/settings.xml。
前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。

推荐使用用户范围的settings.xml,主要是为了避免影响到系统中的其他用户。如果需要统一系统中所有用户的settings.xml配置,应该使用全局范围的settings.xml。

使用用户范围的settings.xml还便于Maven升级。

(3)不要使用IDE内嵌的Maven
应该在IDE中配置Maven插件时使用与命令行(因为除了IDE,经常会使用命令行的Maven)一致的Maven。

菜单栏-Windows-Preferences-Maven-Installations:
在右侧的面板中,有一个默认的Embedded Maven被选中。单击"Add..."按钮,然后选择Maven的安装目录M2_HOME,添加完毕之后选择这个外部的Maven。




© 著作权归作者所有

粉丝 10
博文 25
码字总数 38957
作品 0
武汉
私信 提问
jenkins实战安装java maven项目

一、构建配置搭建 1、创建一个新的项目,选择maven来操作 2、要想构建maven项目,代码库中必须要有一个maven 3、把maven压缩包,解压到一个目录,在当前目录下使用git上传到gitlab项目库 gi...

kesungang
2017/05/17
0
0
Maven项目管理工具参考知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaobryant/article/details/73609047 本笔记主要记录关于Maven知识体系的一些Pages和Tips! 一、Maven入门手...

adoryn
2017/06/22
0
0
Maven实战(一)安装与配置

简介 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.  如果你已经有十次输入同样的Ant targets来编译你的代码、jar或者war、生成j...

囚兔
2013/12/08
203
0
Maven实战

《Maven实战》是国内首本公开出版的Maven专著。 它内容新颖,基于新发布的Maven 3.0,不仅详尽讲解了 Maven 3.0的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2.0版本进行了对比...

ddddd8
2018/01/08
0
0
Maven的使用,Nexus建立本地仓库以及Eclipse导入Maven项目(四): 实战篇

Maven的使用,Nexus建立本地仓库以及Eclipse导入Maven项目(四): 实战篇 项目实战篇: ================================================================ 下载项目 ------------------------......

DavyZhong
2012/11/12
2.2K
4

没有更多内容

加载失败,请刷新页面

加载更多

Taro 兼容 h5 踩坑指南

最近一周在做 Taro 适配 h5 端,过程中改改补补,好不酸爽。 本文记录📝遇到的问题,希望为有相同需求的哥们👬节约点时间。 Taro 版本:1.3.9。 解决跨域问题 h5 发请求会报跨域问题,需...

dkvirus
42分钟前
3
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
2
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
3
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部