一、为什么执行maven命令时,会首先链接远程仓库呢
在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元素的值为想要的仓库地址
二、怎么配置eclipse中maven首先本地仓库
1、手动创建本地仓库的地址为,在对应路径D:\IDE\personalEclipse\下创建repository文件夹,然后将D:\IDE\personalEclipse\apache-maven-3.3.9\conf\setting.xml这个路径下的文件复制到D:\IDE\personalEclipse\repository该文件夹下。
2、从windows的环境变量中增加了:M2_REPO=D:/IDE/personalEclipse/repository,同时把这个变量增加到path变量中。
三、如何让maven只使用本地仓库
解释:查看是否成功最简单的方法是下载包到本地仓库。 第一步:新建一个maven工程,或者找一个带有pom.xml配置文件maven工程。 第二步:右击这个工程,在弹出的菜单中,找到“maven”点击,在弹出的菜单中,选择download source下载资源。
四、maven注入本地maven库是必须的吗
maven依赖会优先在本地库中查询依赖包,若本地库没有,则会在中央库自动下载依赖。一般公司maven配置中央库都会改为公司内部私库,包含有各种常用包,这样可以统一依赖包来自公司内部。
五、maven是怎么判断包在本地仓库和远程仓库哪个是新的
maven对构件的更新判断基本上是两种,一种是稳定版本,一种是maven特有的SNAPSHOT版本。
稳定版本很好判断,直接根据maven构件的坐标体系就能够获得。先从本地仓库中找,如果本地仓库没有,就从pom.xml和setting.xml配置的远程仓库来找。
SNAPSHOT版本的判断比较麻烦,基本步骤如下:
假设我在2014年08月22日09时40分52秒在我自己的电脑上使用 “mvn install” 构建了“com.mycompany.demo:test:1.0-SNAPSHOT”。
那么Maven会在本地仓库目录“~/.m2/com/mycompany/demo/test/1.0-SNAPSHOT/”下生成文件“maven-metadata-local.xml”,内容如下:
com.mycompany.demo test 1.0-SNAPSHOT true jar 1.0-SNAPSHOT pom 1.0-SNAPSHOT
十点钟的时候,其他同事更新了com.mycompany.demo:test:1.0-SNAPSHOT的内容,并通过 mvn deploy 发布到了公司的Maven服务器上。
公司Maven服务器上产生了文件:
test-1.0-20140822.100021-1.jar
test-1.0-20140822.100021-1.pom
并更新了maven-metadata.xml,内容如下:
com.mycompany.demo test 1.0-SNAPSHOT 20140822.100021 34 jar 1.0-20140822.100021-1 pom 1.0-20140822.100021-1
|