关闭

Maven学习总结(18)——深入理解Maven仓库

178人阅读 评论(0) 收藏 举报
分类:

一.本地仓库(Local Repository)

本地仓库就是一个本机的目录,这个目录被用来存储我们项目的所有依赖(插件的jar包还有一些其他的文件),简单的说,当你build一个Maven项目的时候,所有的依赖文件都会放在本地仓库里,仓库供所有项目都可以使用

默认情况下,本地仓库在.m2目录,windows下的话就是你的用户名目录下的.m2目录

1.更新本地仓库目录

找到你的MAVEN_HOME目录下的conf/setting.xml文件,更新localRepository节点

<code class="prettyprint" style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; max-height:600px; display:block; overflow:auto; background-color:rgb(247,247,247)"><span class="tag" style="color:#8000;"><settings></span><span class="pln">
  </span><span class="com" style="color:gray;"><!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  --></span><span class="pln">

</span><span class="tag" style="color:#8000;"><localRepository></span><span class="pln">D:/maven/repo</span><span class="tag" style="color:#8000;"></localRepository></span></code>

 2.保存一下

完成了。新的本地仓库被放在了D:/maven/repo

看一下这个目录

 二.中央仓库(central repository)

当我们build一个Maven项目的时候,Maven会检查我们的pom.xml文件,来定义项目的依赖,然后Maven会在本地仓库里查找,如果没有找到,就去maven的中央库去下载,地址是

http://search.maven.org/#browse

看起来是这样的

注意啊,虽然这个是新的中央仓库,但有时候还是会从http://repo1.maven.org/maven/这个旧仓库下载东西,不过不要紧,理解就行了

三.远程仓库(Remote Respository)

在Maven中,当你在pom.xml中生命的依赖既不在本地库,也不在中央库的时候,就会报错。

1.例子

org.jvnet.localizer这个包仅在java.net的仓库里有(以前是,现在中央仓库也有了。但理解就行)

<code class="prettyprint" style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; max-height:600px; display:block; overflow:auto; background-color:rgb(247,247,247)"><span class="tag" style="color:#8000;"><dependency></span><span class="pln">
        </span><span class="tag" style="color:#8000;"><groupId></span><span class="pln">org.jvnet.localizer</span><span class="tag" style="color:#8000;"></groupId></span><span class="pln">
        </span><span class="tag" style="color:#8000;"><artifactId></span><span class="pln">localizer</span><span class="tag" style="color:#8000;"></artifactId></span><span class="pln">
        </span><span class="tag" style="color:#8000;"><version></span><span class="pln">1.8</span><span class="tag" style="color:#8000;"></version></span><span class="pln">
    </span><span class="tag" style="color:#8000;"></dependency></span></code>

当我们build的时候,会失败,并输出未找到错误信息

2.声明java.net仓库

为了告诉Maven从远程仓库里获取依赖,我们需要声明一个远程仓库,在pom.xml里这样写

<code class="prettyprint" style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; max-height:600px; display:block; overflow:auto; background-color:rgb(247,247,247)"><span class="tag" style="color:#8000;"><repositories></span><span class="pln">
	</span><span class="tag" style="color:#8000;"><repository></span><span class="pln">
	    </span><span class="tag" style="color:#8000;"><id></span><span class="pln">java.net</span><span class="tag" style="color:#8000;"></id></span><span class="pln">
	    </span><span class="tag" style="color:#8000;"><url></span><span class="pln">https://maven.java.net/content/repositories/public/</span><span class="tag" style="color:#8000;"></url></span><span class="pln">
	</span><span class="tag" style="color:#8000;"></repository></span><span class="pln">
    </span><span class="tag" style="color:#8000;"></repositories></span></code>

这样,Maven搜索依赖的顺序就是:

1)搜索本地仓库,没有找到,就去第2步,否则退出

2)搜索中央仓库,没有找到,就去第3步,否则退出

3)去Java.net远程仓库获取,没有找到,就报错,否则退出

补充:JBoss也有个远程仓库,可以如下配置:

<code class="prettyprint" style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; max-height:600px; display:block; overflow:auto; background-color:rgb(247,247,247)"><span class="tag" style="color:#8000;"><project</span><span class="pln"> ...</span><span class="tag" style="color:#8000;">></span><span class="pln">
    </span><span class="tag" style="color:#8000;"><repositories></span><span class="pln">
      </span><span class="tag" style="color:#8000;"><repository></span><span class="pln">
	</span><span class="tag" style="color:#8000;"><id></span><span class="pln">JBoss repository</span><span class="tag" style="color:#8000;"></id></span><span class="pln">
	</span><span class="tag" style="color:#8000;"><url></span><span class="pln">http://repository.jboss.org/nexus/content/groups/public/</span><span class="tag" style="color:#8000;"></url></span><span class="pln">
      </span><span class="tag" style="color:#8000;"></repository></span><span class="pln">
    </span><span class="tag" style="color:#8000;"></repositories></span><span class="pln">
</span><span class="tag" style="color:#8000;"></project></span></code>
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:225385次
    • 积分:3217
    • 等级:
    • 排名:第11312名
    • 原创:21篇
    • 转载:455篇
    • 译文:0篇
    • 评论:16条
    最新评论