maven
maven
maven是现在主流公司都在使用的一个项目组织工具.也有一些替代的工具,比如gradle,但是目前还没形成趋势,能否大规模使用有待验证.
使用maven具备如下好处
- jar包管理,使用maven搭建的环境,比使用ant或者自己管理的jar包,会出现更少的jar包冲突
- 打包控制,除了能方便的打包以外,还能打doc包,source包和可执行包
- 集成CI工具,使用maven的最重要的好处就能可以和各种CI工具集成,是敏捷开发中不可缺少的工具
- 查看源码,改变了查看源码的方式
虽然各种IDE里面已经集成了嵌入式的maven,我这边还是推荐使用外部的Maven工具进行处理,内部嵌入式的maven,会受到当前IDE的JRE的影响,有时候本地编译成功不代表在服务器上能成功. 而本地成功,能代表服务器上进行编译也一定能成功.
Maven的安装
- 下载最新版本的maven
- 配置环境变量
- 配置maven_home,指向maven的解压缩目录,注意,路径不要出现中文
- 配置path变量,指向%maven_home%/bin
- 新开CMD窗口,使用 "mvn -v" 进行验证
Maven的配置
maven会读取settings文件的配置.在默认情况下,会使用%maven_home%/conf/settings.xml文件,不直接使用这个文件. 因为IDE里面也有maven,而IDE的maven和当前的maven是2个应用程序,IDE内的maven无法读取到这个配置文件
推荐使用当前用户的唯一配置文件地址, %当前用户%/.m2/settings.xml
这边的当前用户的变量
- 在windows环境,指代C:\Users**登录用户**的文件夹
- 在linux环境,指代/home/登录用户的文件夹
如果目标目录不存在,我们可以自己创建该目录,拷贝%maven_home%/conf/settings.xml到目标目录.
一个原始的settings文件,需要修改如下配置
- 搜索localRepository,这个配置是配置maven下载的jar包的本地存储路径,默认是在%当前用户%/.m2/repository下面,因为上面windows的用户会settings文件会配置在c盘,而操作系统有时候会被格掉,建议这个路径不要放在系统盘,随便找个盘就可以,linux用户也是一样的.
- 搜索mirrors,这个配置是maven的查找私服地址的配置,如果没有这个配置,maven会查找中央库,某些原因会很慢,导致jar包无法下载.如果我们自己建有私服(推荐),配置私服的public类型的地址,如果我们没有私服,建议配置阿里云的maven地址,速度很好.
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>Maven的常用命令
执行下列命令,请把命令行定位到代码目录中还有pom.xml的目录
安装包到本地仓库
** mvn clean install -Dmaven.test.skip -U **
这个命令主要用于没有安装maven私服的用户,将通用jar包安装到本地仓库 -U 指代每次编译不使用snapshot的jar包 -Dmaven.test.skip 指代在给当前code进行打包的时候,不运行包内的testcase
打包命令
** mvn clean package -Dmaven.test.skip -U **
package命令,只进行打包,不进行安装 install命令,也会包含package命令
上传命令
** mvn clean deploy -Dmaven.test.skip -U **
将当前code编译打包以后,上传到私服
常见错误
maven无法下载jar包
请进入本地仓库的目录,删除对应包的所有文件,在执行命令
maven在下载一个包的时候,会在本地生成.lastUpdate文件和包含sha1的各种其他文件,maven命令在一段时间内,不会在请求中央仓库下载,如果删除本地的文件,maven会重新开始下载. 检查pom文件内,groupId或者artifactId写错导致. 在打包的时候,查看是否所有的依赖包都已经install到本地仓库,maven无法识别eclipse的项目.
