1、简单介绍
我们看一下github上一些开源项目的目录结构,下图中有mybatis、netty、dubbo这些比较有影响的项目,在每个项目中都可以看到一个pom.xml文件,这就是maven的配置文件。
![](https://static.oschina.net/uploads/img/201705/11172401_uWuV.jpg)
那么maven是什么呢?
百度百科中是这么说的,“Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。”当然,继续看下去,还是会有很多专业名词,如果你是刚入门的话,可以暂时不去看这些,有时间可以慢慢研究。其实Maven是一个项目管理和整合的工具,并且为开发者提供了一套完整的构建生命周期框架。
2、使用感受
以前经常碰到的情况就是,往往一个跳槽来的新同事会问,“用过maven吗?怎么不用maven?”等问题,也是有些尴尬的搭不上话,偶尔在网上看代码的时候也会看到maven项目,但是不会用。那时候也就是因为刚入行,人比较懒吧,也不去看不去学。其实很多人一开始对于maven的印象,认为maven就是一个下载jar包的插件而已,我一开始也是一样,并不是太在意,上手了一段时间后,才体会到maven不仅仅是一个管理jar包依赖的工具,按我的理解,maven有茫茫多的好处,比如:方便管理各种库文件依赖、标准化构建流程、提升开发者效率、在持续集成中扮演重要作用。
对于开发效率和部署效率的提升真的是使我印象深刻,流程的标准化也可以减少很多人为因素可能带来的错误,当然,如果还没有上手过maven项目的来说,我的建议最好是赶紧将maven整合进项目中,以上的种种好处你也会慢慢体验到,而且网上教程资源那么多,完全不用担心无法入门,想要进阶的话也可以看看《Maven实战》这本书。
在这篇文章中我也只是简单讲一下自己对于maven的使用心得,总结的有些简单,其实是想告诉看到此文的你,像maven、gradle这些可以明显提升开发效率的工具真的要用到项目中,一个高效率的工作状态应该是我们每一个技术人的追求。
3、安装与整合
linux下maven的安装,
点这里
安装后就是与eclipse或者idea等开发软件整合的事情啦。
eclipse与maven整合,
点这里
idea与maven整合,
点这里
这些都是需要自己花点时间去研究的东西,而且网上教程也多,就直接放了感觉不错的教程的链接地址。
4、maven仓库
由于默认的仓库地址是国外网址,会对下载速度有一定的影响,下载jar包时,如果没有将仓库设置为国内链接的话,可能会导致下载慢的情况,这种情况也很好解决,设置国内镜像或者国内仓库,当然也可以自己搭建私服,有时间的话会单独写一个搭建私服的文章,想了解的也可以自己先搜一下相关教程。
推荐一个搜索jar包的maven依赖时常用地址:
http://mvnrepository.com/
settings.xml中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。
View Code
几个国内可用的maven repository连接:
5、setting.xml文件
settings.xml文件是用来设置maven参数的配置文件。并且,settings.xml是maven的全局配置文件。而pom.xml文件是所在项目的局部配置。
settings.xml中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。
关于setting.xml介绍可以
看这里
下面是一个settings.xml的示例文件:
![](https://static.oschina.net/uploads/img/201705/11172402_brwU.gif)
![](https://static.oschina.net/uploads/img/201705/11172402_jDdF.gif)
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
6
7 <!-- 本地仓库:本地存放jar包的文件夹位置 -->
8 <localRepository>/xx/xx</localRepository>
9
10 <pluginGroups>
11 </pluginGroups>
12
13 <proxies>
14 </proxies>
15
16 <servers>
17 </servers>
18
19 <!--加速镜像,也可以考虑阿里云的maven镜像 -->
20 <mirrors>
21 <mirror>
22 <id>UK</id>
23 <mirrorOf>central</mirrorOf>
24 <url>http://uk.maven.org/maven2</url>
25 </mirror>
26 <mirror>
27 <id>net-cn</id>
28 <mirrorOf>central</mirrorOf>
29 <url>http://maven.net.cn/content/groups/public/</url>
30 </mirror>
31 <mirror>
32 <id>osc</id>
33 <mirrorOf>central</mirrorOf>
34 <url>http://maven.oschina.net/content/groups/public/</url>
35 </mirror>
36 <mirror>
37 <id>osc_thirdparty</id>
38 <mirrorOf>thirdparty</mirrorOf>
39 <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
40 </mirror>
41 </mirrors>
42
43 <profiles>
44 <profile>
45 <id>osc</id>
46 <activation>
47 <!--当前使用的远程仓库为osc-->
48 <activeByDefault>true</activeByDefault>
49 </activation>
50 <repositories>
51 <repository>
52 <id>osc</id>
53 <!--当前使用的远程仓库地址 -->
54 <url>http://maven.oschina.net/content/groups/public/</url>
55 </repository>
56 <repository>
57 <id>osc_thirdparty</id>
58 <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
59 </repository>
60 </repositories>
61 <pluginRepositories>
62 <pluginRepository>
63 <id>osc</id>
64 <url>http://maven.oschina.net/content/groups/public/</url>
65 </pluginRepository>
66 </pluginRepositories>
67 </profile>
68 <profile>
69 <id>net-cn</id>
70 <repositories>
71 <repository>
72 <id>net-cn</id>
73 <url>http://maven.net.cn/content/groups/public/</url>
74 </repository>
75 </repositories>
76 <pluginRepositories>
77 <pluginRepository>
78 <id>net-cn</id>
79 <url>http://maven.net.cn/content/groups/public/</url>
80 </pluginRepository>
81 </pluginRepositories>
82 </profile>
83 </profiles>
84
85
86 </settings>
怕说多了啰嗦,就到这里吧,等下把代码整合一下,放到github上啦。