为啥执行maven命令时,会首先链接远程仓库呢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥执行maven命令时,会首先链接远程仓库呢相关的知识,希望对你有一定的参考价值。
执行maven命令,为什么本地仓库已经存在这个插件,还要去下载呢?
参考技术A 在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元素的值为想要的仓库地址追问
配置了本地仓库,本地仓库中也存在某个需要的插件,可为什么还要下载呢?
本回答被提问者和网友采纳如何将本地代码提交到github远程仓库
今天提交本地代码到远程仓库,没有成功过,后来经过多方试验,终于取得了成功。
首先,在本地创建本地仓库(也就是在项目的根目录下执行"git init"命令,生成.git文件就算是成功了,注意.git文件时隐藏文件,有些电脑可能设置了不可见隐藏文件,这时候会误以为命令没有执行成功,就会再次输入git init命名,就会发现下面会给予这样的提示“Reinitialized existing Git repository in .... ”,这个人就是我...)。
接着,输入“git remote add origin [远程仓库路径]”就可以让本地仓库与远程仓库建立连接。
最后,输入"git add *"、"git commit -m ‘备注‘ "、"git push origin master"提交项目。
在这过程中,还报了一下错误
[Non-fast-forward]问题出现的原因是远程仓库与本地仓库不一致,远程仓库存在一个文件,而本地仓库没有,我们add,commit,push之前没有先pull,这时候再pull就会得到以下提示“fatal:refusing to merge unrelated histories”,提交不上去,更新不下来,怎么办?后来,百度找到了答案:"git pull origin master --allow-unrelated-histories",输入过后,就会跳转到提交注释的界面,输入wq就可以强行退出,再"git status"就会发现远程仓库的文件被更新下来了,并已经加载到在暂存区里,接着就可以commit,push提交了。[参考网址:http://blog.csdn.net/lindexi_gd/article/details/52554159]
以上是关于为啥执行maven命令时,会首先链接远程仓库呢的主要内容,如果未能解决你的问题,请参考以下文章