Maven(四)仓库

在不使用Maven的那些项目中,我们往往就能发现命名为lib/的目录,各个项目lib/目录下的内容存在大量的重复,例如大部分项目都用到了log4j,有一小部分用到了Spring
FrameWork,还有另外一小部分用到了struts2,在每个需要的项目中都放置一份重复的log4j或者struts2显然不是最好的解决方案,这样做不仅造成了磁盘空间的浪费,而且也难于统一管理,文件的复制等操作也会降低构建的速度。

得益于上述博文讲到的坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的。再此基础上,Maven可以在某个位置统一存储所有Maven项目共享的构建,这个统一的位置就是仓库。实际的Maven项目将不再各自存储其依赖文件,它们只需要声明这些依赖的坐标,在需要的时候,Maven会自动根据坐标找到仓库中的构件,并使用它们。为了实现重用,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其他项目使用。

对于Maven来说,仓库只分为两类:本地仓库远程仓库。当Maven根据坐标寻找构件的时候,它首先会查看本地仓库,如果本地仓库存在此构件,则直接使用;如果本地仓库不存在此构件,或者需要查询是否有更新的构件版本,Maven就会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。如果本地仓库和远程仓库都没有需要的构建,Maven就会保存。

在这个最基本的分类的基础上,还有必要介绍一些特殊的远程仓库。中央仓库是Maven核心自带的远程仓库,它包含了绝大部分开源的构件。在默认配置下,当本地仓库没有Maven需要的构件的时候,它就会尝试从中央仓库下载。私服是另一种特殊的远程仓库,为了节省带宽和时间,应该在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库,内部的项目还能部署到私服上供其他项目使用。

一、本地仓库

一般来说,在Maven项目目录下,没有诸如Lib/这样用来存放依赖文件的目录。当Maven在执行编译或者测试时,如果需要使用依赖文件,它总是基于坐标使用本地仓库的依赖文件。

默认情况下,不管是在windows还是Linux下,每个用户在自己的用户目录下都有一个路径名为.m2/repository/的仓库目录。这是Maven默认的仓库路径,当然,我们也可以自定义本地仓库目录地址。只需要修改~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址即可,例如:

二、远程仓库

安装好Maven后,如果不执行任何Maven命令,本地仓库目录时不存在的。当用户输入第一条Maven命令之后,Maven才会创建本地仓库,然后根据配置和需要,从远程仓库下载构件至本地仓库。如下图:

(一)中央仓库 

由于最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令的时候下载到需要的构件。中央仓库就是这样一个默认的远程仓库,Maven的安装文件自带了中央仓库的配置。

(二)私服

由上图可以看到没有私服时的Maven使用过程。下面来说一说加上私服会怎么样。私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。

知道原理之后,有些读者可能会想,为什么需要在局域网内使用私服呢?主要有以下几个特点:

1.节省自己的外网带宽。建立私服同样可以减少组织自己的开支,大量的对于外部仓库的重复请求会消耗很大的带宽,利用私服代理外部仓库之后,对外的重复构件下载便得以消除,即降低外网带宽的压力。

2.加速Maven构建。不停地连接请求外部仓库是十分耗时的,但是Maven的一些内部机制(如快照更新检查)要求Maven在执行构建的时候不停地检查远程仓库数据。因此,当项目配置了很多外部远程仓库的时候,构建的速度会被大大降低。使用私服可以很好地解决这一问题。

3.部署第三方构件。当某个构件无法从任何一个外部远程仓库获得,怎么办?建立私服之后,便可以将这些构建部署到这个内部的仓库中,供内部的Maven项目使用。

4.提高稳定性,增强控制。Maven构建高度依赖于远程仓库,因此当Internet不稳定的时候,Maven构建也会变得不稳定,甚至无法构建。使用私服后,既是暂时没有Internet连接,由于私服中已经缓存了大量构件,Maven也仍然可以正常运行。

说了这么多,其实归根到死,Maven仓库就分为两种:本地仓库和远程仓库。其中远程仓库中的私服,它在Maven项目中起到了至关重要的作用。

时间: 2024-11-10 13:33:46

Maven(四)仓库的相关文章

用nexus搭建自己的maven私有仓库

用nexus搭建自己的maven私有仓库 刚安装nexus时,nexus启动失败,启动不到1分钟,自动停止.后来查找到了原因: Java 6 Support EOLOracle's support for Java 6 ended in February 2013.  Consequentially as of version 2.6 Nexus now requires a Java 7 JRE to run. 意思就是从2.6.0开始不支持6了,jdk版本要求7以上. 一.用admin用户登

nexus 搭建maven本地仓库

使用Nexus搭建Maven本地仓库 阅读目录 序 Nexus 序 在工作中可能存在有些开发机器不能上网,大量的机器获取jar包会导致公司网络很慢,还有时候公司会自己发布自己的项目版本,其他的项目可能会依赖引用到,所以就需要用到Maven的本地仓库. 下面就这个构建本地Maven仓库进行阐述. Nexus 一:介绍 Nexus是Maven的仓库管理器,用来搭建一个本地仓库服务器,这样做的好处便于管理,节约网络资源, 速度快,可以通过SNAPSHOT版本控制,开进行模块间的高效依赖开发. 二:下载

Maven(四-1) Maven的配置文件settings.xml

转载于:http://www.cnblogs.com/yakov/archive/2011/11/26/maven2_settings.html 概览 当Maven运行过程中的各种配置,例如pom.xml,不想绑定到一个固定的project或者要分配给用户时,我们使用settings.xml中的settings元素来确定这些配置.这包含了本地仓库位置,远程仓库服务器以及认证信息等. settings.xml存在于两个地方: 1.安装的地方:$M2_HOME/conf/settings.xml 2

如何在云服务器创建maven私有仓库

参考链接:https://blog.csdn.net/silence_jjj/article/details/77531916 nexus3创建maven私有仓库(windows) 1.官网:https://www.sonatype.com/download-oss-sonatype 2.解压nexus3的zip包,找到\nexus-3.3.1-01\bin文件夹,shift+右键 -> 在此处打开命令窗口 3.在cmd中输入 nexus.exe/run ,然后回车 4.等待几分钟后,控制台出现

Maven——向Maven本地仓库中手动添加依赖包(ps:ojdbc.jar)

maven中央仓库中并非包含所有现有的依赖包和插件,部分依赖包和插件需要手动地进行添加(如ojdbc.jar) 一.添加JDK系统环境变量(maven是基于Java的,可参考:https://www.runoob.com/w3cnote/windows10-java-setup.html) 二.添加mvn命令到路径(同1理进行配置) 三.进入cmd,输入mvn命令:mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc -

喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库

相信通过java和SQLServer开发应用的同学们都经历过如下类似的问题. 微软提供的JDBC官方驱动没有放置在Maven仓库中,这样如果你的Java应用需要访问SQL Server,你不得不下载sqljdbc4.jar至本地,然后每次都通过如下Maven命令安装这一驱动: mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar

推荐几个好的 Maven 常用仓库网址

注意,以下内容转载自:推荐几个好的 Maven 常用仓库网址 Maven 确确实实是个好东西,用来管理项目显得很方便,但是如果是通过 Maven 来远程下载 JAR 包的话,我宿舍的带宽是4兆的,4个人共用,有时候用 Maven 来远程下载 JAR 包会显得很慢,一般我发现下载速度不明显的时候,我就 Ctrl + C 来终止它的下载.然后改用手动来下载,因为用迅雷一类的工具来下载会快很多.我机子上 Maven 的本地仓库的很多 JAR 包我都是手动下载的.手动下载的话就会带来一个问题,就是,怎么

解决Maven默认仓库没有的jar下载(二)

前言: 在 “解决Maven不能下载“oracle.aspectjweaver.com.springsource.net.sf.cglib”jar(http://www.cnblogs.com/wql025/p/4996484.html )”一文中我写到了如果像oracle这样的jar不能在maven默认仓库下载的解决方法.现在我知道了一个非常强大的Maven仓库地址: http://maven.oschina.net/home.html 可能很多小伙伴已知道啦. 所以当有些jar不能下载可以在

maven搜索仓库

——爱迪生经过1001次实验成功发明了电灯 1.maven搜索服务 国外常见maven仓库:可能打开很慢甚至无法打开,解决方案.代理.svn或国内maven搜索仓库 1.1 Sonatype Nexus http://repository.sonatype.org/ 1.2 Jarvana http://www.jarvana.com/ 1.3MVNbrowser http://www.mvnbrowser.com 1.4 MVNrepository (访问速度比上面三个快些) http://m

一步一步教你分享开源项目到 Maven 中心仓库

欢迎各位关注我的新浪微博:http://weibo.com/kifile 转载请标明出处(http://blog.csdn.net/kifile) 相信很多程序猿朋友都或多或少写过一些通用库文件,也有很多人会秉着开源的精神将代码分享到类似 Github 之类的代码托管网站去. 其实大家分享代码的时候,目的在于让更多的人使用,但是如果仅仅是放在 Github 这些工具上等人家下载使用,其实很多人是会觉得很麻烦的,那么有什么方法能够帮助我们在不下载 Github 上的源码的时候,使用这些代码吗? 回