maven仓库
1、maven仓库
maven可以在某一个位置统一存储所有maven项目共享的构件,这个统一的位置就是仓库。实际的maven项目将不会各自存储其依赖文件,他们只需要声明这些依赖的坐标,在需要的时候,maven会自动根据坐标找到仓库中的构件,并使用它们。为了实现重用,项
目构建完毕后生成的构件也可以安装或者部署到长裤中,供其他项目使用。
2、仓库的布局
任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径,这便是maven的长裤布局方式.3、仓库的分类
(1)本地仓库
默认情况下,每个用户在自己的用户目录下都有一个.m2/repository/的仓库目录。有时候,因为某些原因,用户想自定义本地仓库的目录地址。这时,可以编辑文件settings.xml,设置localRepository元素的值为想要设置的仓库地址
<settings>
<localRepository>想要设置的地址</localRepository>
</settings>
默认情况下settings.xml文件时不存在的,需要从maven安装目录下面的config文件中获取再进行编辑。
一个构件只有在本地仓库中,才能由其他maven项目使用。最常见的依赖maven从远程仓库下载到本地仓库中。还有一种常见的情况
是,将本地项目的构件安装到maven仓库中。为了安装项目,我们可以在项目中执行:mvn clean install命令
(2)远程仓库
安装好maven后,如果不执行任何maven命令,本地仓库目录是不存在的。当用户输入第一条maven命令之后,maven才会创建本地仓库,然后根据配置和需要,从远程仓库下载构件至本地仓库。
(3)中央仓库
由于最原始的的本地仓库是空的,maven必须知道至少一个可用的远程仓库,才能在执行maven命令的时候下载到所需要的构件。中央仓库就是这样一个默认的远程仓库。maven的案子文件自带了中央仓库的配置。可以打开maven-model-builder-3.0.jar,然后
访问路径:org/apache/maven/model/pom-4.0.0.xml,可以看到如下的配置
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
包含这段配置的文件是所有maven项目都会继承的超级pom。这段配置使用id central对中央仓库进行唯一标识,其名称为Maven
Repository Switchboard,它使用default仓库布局。最后需要注意的是snapshots元素。其子元素enabled的值为false,表示不从
中央仓库中下载快照版本的构件。
(4)私服
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的maven用户使用。当maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件。则从外表的远程仓库下载,缓存在私服上之后,再为maven
的下载请求提供服务。此外,一些无法从外表仓库下载到的构件也能从本地上传到私服上供大家使用
4、远程仓库的认证
出于安全方面的考虑,对一些私有仓库提供用户名级别的密码。这时,为了能让Maven访问仓库内容,就需要配置认证信息。认证信息和仓库信息不同,仓库信息可以在POM文件中配置,但是认证信息必须配置在settings.xml中。
其配置方法如下
<settings>
...
<servers>
<server>
<id>my-proj</id>
<username>repo-user</username>
<password>repo-pwd</password>
</server>
</servers>
...
</settings>
settings.xml中server元素的id必须与POM中需要认证的repository元素的id完全一致。换句话说,正是这个Id将认证信息与
仓库配置联系在了一起。
5、仓库搜索
(1)Sonatype Nexus地址为:http://repository.sonatype.org/
(2)Jarvana
地址为:http://www.jarvana.com/jarvana/
(3)MVNbrowser
地址为:http://www.mvnbrowser.com
(4)MVNrepository
地址为:http://mvnrepository.com/