作为一个程序员,很多时候都听到大家在强调学习新知识的三部曲:what、why、how,可是现实中往往很多时候大家都在亟不可待地反着走。
不懂三部曲是神马东西的,可参考这Google出来的首条:http://blog.csdn.net/program_think/article/details/3908713
我在学习maven的前面几天,就一直记着想出点成果,可是无奈maven的学习曲线确实陡了一点,在陌生的概念下产生的成果在内行眼里是如此不伦不类。我Boss就对我说了“你先别急着部署好这项目,先把maven了解清楚了再上”,于是我才把项目抛开,当一门知识在学习maven,拿出考前临时抱佛脚的力气深究了一周。
我是深深清楚当一个人连基本概念都不清楚时,是无法了解一个东西的运作的,所以才再此先讲一讲,学习maven的实战前,需要了解的一些东西。
1. 仓库
maven中,仓库的作用主要用于下载依赖包,其中仓库有以下几种中央仓库:
这是maven程序中内置的仓库,在没有存在额外仓库时,maven所有使用的依赖包都来源于此仓库
镜像仓库:
镜像仓库主要是中央仓库的一个副本,一来是为了提高依赖包的下载速度,同时也可能包含了一些不在中央仓库管辖下的依赖包。常说的maven私服也是镜像仓库的一种。个人开发者是缺少权限将自己开发的包发布到中央仓库中,为了让团队成员使用对应的依赖包,同时也为了提高依赖包的下载速度,公司内部一般建立一个maven私服,除了用来当做中央仓库的一个镜像之外,也用于管理公司内部开发的构件。在外网不宽裕的情况下,私服只需要保存一份中心仓库的依赖包,就可以在公司局域网中快速下载了。
本地仓库:
中央仓库和镜像仓库都属于远程仓库,本地仓库是远程仓库的一个缓冲和子集,当maven项目所需要的依赖包无法再本地仓库中查找到时,才会去远程仓库中进行下载。项目中引用的所有依赖包也都全部指向本地仓库中对应的文件。因此,只需要在电脑中保存一份依赖包,就可以同时为多个项目所引用了。
拿个图展示下这几个库之间的关系: