Apache Maven --- [Repositories]

构件仓库html

Maven中的仓库用来保存构件和不一样类型的依赖.java

严格来说,这里只有两种仓库类型:本地和远程.本地仓库引用了你安装的一份缓存远程下载的拷贝,也包含了你尚未正式发布的临时构件.apache

远程仓库引用了任何其余类型的仓库,经过不一样的通信协议(如:http://和file://)来访问.这些仓库也许是一个被第三方创建起来用来提供它们构件的下载的真实存在的远程仓库(如:repo.maven.apache.org和uk.maven.org存储Maven的中央仓库).缓存

其余"远程"仓库也许是公司内部基于文件或者HTTP服务创建起来的内部仓库,用来在不一样的研发团队之间共享私人构件.安全

本地仓库和远程仓库的结构是同样的,以便于脚本能够轻易的在两边运行,它们也能够被同步离线使用.在平常使用中,仓库的布局对用户来讲是彻底透明的.bash

为何不把JAR包存放在CVS网络

咱们不建议你把JAR包存放在CVS中.Maven试图促进用户本地仓库的概念:它能够存听任何项目构件,也能够被任何数量的构建所使用.在典型的构建中,许多项目都在重复使用一些依赖(如:XML解析,标准工具).经过Maven,这些标准工具能够存储在你的本地仓库中并分享给其余任意数量的构建项目.并发

它有如下优势:maven

使用存储空间减小--虽然一个仓库一般都很庞大,由于每一个JAR都被放在一个地方,但实际上这节约了空间(由于不须要重复),尽管它看上去不是这样.ide

检出项目更加快捷--若是没有大量的二进制文件存储在CVS上,那么项目在初始化检出和小规模更新的时候将会更加的快速.虽然它们可能在以后的任何地方仍是须要被下载,可是这只会发生一次而且对于一些通用JAR来讲可能都没这个必要.

不须要版本控制--CVS和其余的源码控制系统都基于版本控制文件设计,可是外部依赖一般都不会改变,或者即使它们修改了文件名来代表一个新的版本,相比于把它们存放在本地构件缓存,存放在CVS中都没有体现任何额外的好处.

使用仓库

通常状况下,使用本地仓库不须要你作任何操做,除非由于磁盘空间不足须要清理它(或者若是你想彻底清空它并从新下载)

对于远程仓库,它们被用来下载和上传(若是你容许这么作的话)

从远程仓库下载

当一个项目声明的依赖在本地仓库不存在时会触发Maven的下载行为(或者对于一个快照,远程仓库有更新的版本).默认状况下,Maven会从中央仓库下载.

想要覆盖这一行为,你须要指定一个镜像,请查阅:http://maven.apache.org/guides/mini/guide-mirror-settings.html

你能够在你的settings.xml文件中设置它来全局的使用一个特定的镜像仓库,可是请注意,一般状况下一个项目都在它的POM中自定义仓库位置并且它比你的settings.xml配置有更高的优先级.若是你发现有依赖找不到,请检查你是否覆盖了远程仓库的默认地址.

更多关于依赖的信息,请查阅:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

使用中央仓库的镜像

这里有一些官方仓库的地理分布.你能够修改你的settings.xml文件来使用其中的一个或多个镜像位置.更多介绍请查阅: http://maven.apache.org/guides/mini/guide-mirror-settings.html

离线构建

若是你须要临时断网并要离线构建你的项目,使用以下命令:

mvn -o package

注意,许多插件遵循离线设置并且它们不会执行任何须要联网的操做.如解决java文档连接和站点连接检查.

上传到远程仓库

虽然这对于任何远程仓库来讲,可能都须要你容许这么作.如上传到Maven中央仓库,请查阅:http://maven.apache.org/repository/index.html

内部仓库

当使用Maven的时候,特别是在企业环境中,链接到网络下载依赖在安全性,速率或者带宽方面是不可接受的.基于这个缘由,创建一个内部仓库来保存工件的拷贝,并发布私人构件是颇有必要的.

这样的一个内部仓库能够基于HTTP或者文件系统(file://)下载,并使用SCP,FTP或者文件拷贝来上传.

注意,就Maven而言,这个库没什么特殊的:它是另外一个远程仓库,包含能够被下载到你本地缓存的构件,并发布构件.

另外,你可能想要分享仓库服务给你生成的项目站点.请查阅:http://maven.apache.org/guides/mini/guide-site.html

创建内部仓库

创建一个内部仓库只须要你有空间来存放它,而后根据中央仓库 (http://repo.maven.apache.org/maven2/) 的布局来拷贝构件到里面.

不建议同步一个完整中央库拷贝由于数据量是庞大的,并且若是你这么作将会被驱逐.你可使用一个如在仓库管理页面(http://maven.apache.org/repository-management.html)描述的程序来运行你的内部仓库服务,快速下载构件的最新版本并保存到你的内部仓库中.

其余可用选项能够手动检查并下载,而后拷贝到内部仓库,或者让用户经过Maven下载,而后手动上传审核过的构件到内部仓库.这个步骤是惟一可用的方式对于那些许可禁止自动扩散的构件来讲,例如Sun提供的J2EE的一些JAR包.参考更多信息访问:http://maven.apache.org/guides/mini/guide-coping-with-sun-jars.html

应该注意的是Maven打算在未来包含这些特性的增强版,包括点击下载许可,校验签名.

使用内部仓库

使用内部仓库是很是简单的,仅仅须要改变或者添加一个repositories元素:

<project>
  ...
  <repositories>
    <repository>
      <id>my-internal-site</id>
      <url>http://myserver/repo</url>
    </repository>
  </repositories>
  ...
</project>

若是你的内部仓库须要鉴定,id元素能够在你的settings.xml文件中被用来指定登陆信息.

部署到内部仓库

拥有一个或多个内部仓库的重要缘由之一是可让你发布你本身的私有项目来共享给其余项目.

要发布项目到仓库,你须要如SCP,SFTP,FTP,WebDAV,文件系统中的一种访问方式.链接不一样的马车来完成,一些马车可能须要做为扩展被添加到你的构建中.

相关文章
相关标签/搜索