maven3实战之仓库

maven3实战之仓库(maven仓库分类)html

maven3实战之仓库(maven仓库分类) ---------- 对于maven来讲,仓库只分为两类:本地仓库和远程仓库。当maven根据坐标寻找构件的时候,它首先会查看本地仓库,若是本地仓库存在此构件,则直接使用;若是本地仓库不存在此构件,或者须要查看是否有更新的构件版本,maven就会去远程仓库查找,发现须要的构件以后,下载到本地仓库再使用。若是本地仓库和远程仓库都没有须要的构件,maven就会报错。 在这个最基本分类的基础上,还有必要介绍一些特殊的远程仓库。中央仓库是maven核心自带的远程仓库,它包含了绝大部分开源的构件。在默认配置下,当本地仓库没有maven须要的构件的时候,它就会尝试从中央仓库下载。私服是另外一种特殊的远程仓库,为了节省带宽和时间,应该在局域网内架设一个私有的仓库服务器,用其代理全部外部的远程仓库。内部的项目还能部署到私服上供其余项目使用。除了中央仓库和私服,还有不少其余公开的远程仓库,常见的有java.net Maven库(http://download.java.net/maven/2/)和jboss Maven库(http://repository.jboss.com/maven2/)等。
1.本地仓库 默认状况下,无论是在windows仍是linux上,每一个用户在本身的用户目录下都有一个路径名为.m2/repository/的仓库目录。有时候,由于某些缘由(例如C盘空间不够),用户会想要自定义本地仓库目录地址。这时,能够编辑文件~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址。例如:java

Xml代码
  1. <settings> 
  2.     <localRepository>D:\java\repository\</localRepository> 
  3. </settings> 

这样,该用户的本地仓库地址就被设置成了 D:\java\repository\。须要注意的是,默认状况下,~/.m2/settings.xml文件是不存在的,用户须要从Maven安装目录复制$M2_HOME/conf/settings.xml文件再进行编辑。 一个构件只有在本地仓库中以后,才能由其余Maven项目使用,那么构件如何进入到本地仓库中呢?最多见的是依赖Maven从远程仓库下载到本地仓库中。还有一种常见的状况是,将本地项目的构件安装到Maven仓库中。例如本地有两个项目A和B,二者都没法从远程仓库得到,而同时A又依赖于B,为了能构建A,B就必须首先得以构建并安装到本地仓库中。为了安装项目,咱们能够在项目中执行: mvn clean install命令。Install插件的install目标将项目的构建输出文件安装到本地仓库。
2.远程仓库 安装好Maven后,若是不执行任何Maven命令,本地仓库目录是不存在的。当用户输入第一条Maven命令以后,Maven才会建立本地仓库,而后根据配置和须要,从远程仓库下载构件至本地仓库。
3.中央仓库 因为最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令的时候下载到须要的构件。中央仓库就是这样一个默认的远程仓库,Maven的安装文件自带了中央仓库的配置。读者可使用解压工具打开jar文件$M2_HOME/lib/maven-model-builder-3.0.jar(在Maven2中,jar文件路径相似于$M2_HOME/lib/maven-2.2.1-uber.jar),而后访问路径:org/apache/maven/model/pom-4.0.0.xml,能够看到以下的配置:linux

 

Xml代码
  1. <repositories> 
  2.     <repository> 
  3.         <id>central</id> 
  4.         <name>Maven Repository Switchboard</name> 
  5.         <url>http://repo1.maven.org/maven2</url> 
  6.         <layout>default</layout> 
  7.         <snapshots> 
  8.             <enabled>false</enabled> 
  9.         </snapshots> 
  10.     </repository> 
  11. </repositories> 

包含这段配置的文件是全部Maven项目都会继承的超级POM。这段配置使用id central对中央仓库进行惟一标识,其名称为Maven Repository Switchboard,它使用default仓库布局。最后须要注意的是snapshots元素,其子元素enabled的值为false,表示不从该中央仓库下载快照版本的构件【快照版本的项目是版本不稳定的项目,因此中央仓库默认是关闭的】。
4.私服 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven须要下载构件的时候,它从私服请求,若是私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上以后,再为Maven的下载请求提供服务。此外,一些没法从外部仓库下载到的构件也能从本地上传到私服上供你们使用。apache

相关文章
相关标签/搜索