详解Maven仓库之本地仓库、远程仓库-创新互联

什么是Maven仓库

创新互联建站服务项目包括从化网站建设、从化网站制作、从化网页制作以及从化网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,从化网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到从化省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.jar等等。

每建立一个项目,你都需要建立这样的一个/lib目录,然后复制一对jar文件,这是很明显的重复。重复永远是噩梦的起点,多个项目不共用相同的jar文件,不仅会造成磁盘资源的浪费,也使得版本的一致性管理变得困难。

此外,如果你使用版本管理工具,如SVN(你没有使用版本管理工具?马上试试SVN吧,它能帮你解决很多头疼的问题),你需要将大量的jar文件提交到代码库里,可是版本管理工具在处理二进制文件方面并不出色。


Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源。此外,由于Maven仓库中所有的JAR都有其自己的坐标,该坐标告诉Maven它的组ID,构件ID,版本,打包方式等等,因此Maven项目可以方便的进行依赖版本管理。你也不在需要提交JAR文件到SCM仓库中,你可以建立一个组织层次的Maven仓库,供所有成员使用。


简言之,Maven仓库能帮助我们管理构件(主要是JAR)。

在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。


Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库。(仓库就是存放依赖和插件的地方)


任何的构件都有唯一的坐标,Maven根据这个坐标定义了构件在仓库中的唯一存储路径,


解读Maven在仓库中的存储路径:


1.基于groupId准备路径,将句点分隔符转成路径分隔符,就是将  "."  转换成 "/" ; example: org.testng --->org/testng


2.基于artifactId准备路径,将artifactId连接到后面:org/testng/testng


3.使用version准备路径,将version连接到后面:org/testng/testng/5.8


4.将artifactId于version以分隔符连字号连接到后面:org/testng/testng/5.8/tesng-5.8


5.判断如果构件有classifier,就要在 第4项 后增加 分隔符连字号 再加上 classifier,org/testng/testng/5.8/tesng-5.8-jdk5


6.检查构件的extension,如果extension存在,则加上句点分隔符和extension,而extension是由packing决定的,org/testng/testng/5.8/tesng-5.8-jdk5.jar


到这里我们就明白了Maven 对于构件存储的细节。


Maven 仓库的分类:


maven的仓库只有两大类:1.本地仓库 2.远程仓库,在远程仓库中又分成了3种:2.1 中央仓库 2.2 游戏 2.3 其它公共库


1.本地仓库,顾名思义,就是Maven在本地存储构件的地方。


注:maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建


maven本地仓库的默认位置:无论是Windows还是Linux,在用户的目录下都有一个.m2/repository/的仓库目录,这就是Maven仓库的默认位置

如何更改maven默认的本地仓库的位置:这里要引入一个新的元素:localRepository,它是存在于maven的settings.xml文件中


1.1 更改配置用户范围的本地仓库:先在/.m2/目录下创建settings.xml文件,然后在~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址


 D:\maven_new_repository 
 

新闻标题:详解Maven仓库之本地仓库、远程仓库-创新互联
分享路径:http://hbruida.cn/article/ceeooo.html