1.什么是仓库
在Maven任何一个依赖、插件或者项目构建的输出,都可以成为构件。Maven统一存储所有Maven项目共享构件的这个统一位置就是仓库。
2.仓库的布局
任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。这便是Maven仓库布局方式。
例如:log4j:log4j:1.2.17这一依赖对应路径为\repository\log4j\log4j\1.2.17
其路径与坐标的大致对应关系为groupId/artifactId/version/artifactId-version.packaging
3.仓库的分类
仓库分为两类:本地仓库和远程仓库。
当Maven根据坐标寻找构件的时候,首先查看本地仓库,如果存在,直接使用;如果本地仓库不存在此构件,Maven就会去远程仓库查找,发现需要的构件之后,下载到本地仓库在使用。如果本地仓库和远程仓库都没有需要的构件,Maven就会报错。
特殊的远程仓库:
•中央仓库:是Maven核心自带的远程仓库,包含了绝大部分开源的构件。
•私服:是在局域网内架设的一个私有的仓库服务器,用其代理所有的外部的远程仓库,内部的项目还能部署到私服上供其他项目使用。
•其他公开的远程仓库:常见的有Java.net Maven库(http://download.java.net/maven/2/)和JBoss Maven库(http://repository.jboss.org/maven2/)
(1)本地仓库
在~/.m2/settings.xml中指明了本地仓库
Default: ~/.m2/repository
可通过localRepository配置,例如
<settings> <localRepository>D:\repository</localRepository> </settings
注意:~/.m2/settings.xml文件是不存在的,需要从Maven安装目录 复制$M2_HOME/conf/setting.xml一份后,在进行编辑。不推荐直接修改全局setting.xml文件
构件进入仓库的方式:
•从远程仓库下载
•mvn clean install
(2)远程仓库
安装好Maven后,如果不执行任何Maven命令,本地仓库目录是不存在的。当用户输入第一条Maven命令后,Maven才会创建本地仓库。
(3)中央仓库
由于最原始的的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能执行Maven命令的时候下载到的构件。
$M2_HOME/lib/maven-model-builder-3.0.4.jar,然后访问maven-model-builder-3.0.4.jar\org\apache\maven\model\pom-4.0.0.xml,可以看到如下信息:
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
包含这段配置的文件是所有Maven项目都会继承的超级POM
id:central 对中央仓库进行唯一标识;名称name:Central Repository;布局layout:default;snapshots-enabled-false表示不从该中央仓库下载快照版本的构件。
(4)私服
私服是一种架设在局域网内的特殊的远程仓库,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。
当Maven需要下载构件的时候,它从私服请求,如果不存在,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。此外,一些无法从外部仓库下载到的构件也能从本地上传到私服上。
私服的作用:
•节省自己的外网带宽;
•加速Maven构建
•部署第三方构件,当某个构件无法从任何一个外部远程仓库获得,比如组织内部私有构件、Oracle的JDBC驱动。建立私服后,可以将这些构件部署到这个内部仓库中,供内部的Maven项目使用;
•提高稳定性,增强控制
•降低中央仓库的负荷
4.远程仓库的配置
可以在POM中或setting.xml中配置该仓库内容如下:
<project> <repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <layout>default</layout> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
id:唯一标识,注意中央仓库ID为central,如果其它的仓库声明用使用该ID,就会覆盖中央仓库的配置。
layout:表示仓库的布局是Maven2及Maven3的默认布局。
releases:子元素enabled的值为true,表示开启JBoss仓库的发布版本下载支持。
snapshots:子元素enabled的值为false,关闭JBoss仓库的快照版本下载支持。
releases和snapshots:
updatePolicy子元素配置更新频率,默认值是daily,表示Maven每天检查一次。其他值never-从不检测更新;always-每次构建都检查更新;interval:X - 每隔X分钟检查一次更新;
checksumPolicy子元素用来配置Maven检查检验和文件的策略。当构件部署到Maven仓库中时,会验证校验和文件,如果校验和验证失败,默认为warn,输出警告信息;fail,构件失败;ignore,忽略
(1)远程仓库的认证
认证信息必须配置在setting.xml中
<settings> ... <servers> <server> <id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> </server> <server> <id>siteServer</id> <privateKey>/path/to/private/key</privateKey> <passphrase>optional; leave empty if not used.</passphrase> </server> </servers> ... </settings>
(2)部署至远程仓库
需要编辑pom.xml文件
<project> <distributionManagement> <repository> <id>proj-release</id> <name>Proj Release Repository</name> <url>http://192.168.1.100/content/repository/proj-releases</url> </repository> <snapshotRepository> <id>proj-snapshot</id> <name>Proj Snapshot Repository</name> <url>http://192.168.1.100/content/repository/proj-snapshot</url> </snapshotRepository> </distributionManagement> </project>
distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本构件仓库,后者表示快照版本构件仓库。两个子元素下都需要配置id、name、url。
往远程仓库部署的时候,需要认证,配置方式就是在setting.xml中创建一个server元素,其id与仓库的id匹配,并配置正确的认证信息,下载构件和部署构件认证配置方式是一样的。
部署命令:
mvn clean deploy
5.快照版本
快照主要用于组织内部协同开发时使用,如果是SNAPSHOT版本,在发布到私服的过程中会为构件打上时间戳,例如:2.1-20091214.221414-13,其他对该构件有依赖的项目的项目可以在构件时进行检查。默认情况下每天检查一次(updatePolicy进行控制),也可以使用命令行-U参数强制让Maven检查更新
mvn clean install -U
6.从仓库解析依赖的机制
Maven从仓库解析并使用依赖构件的规则如下:
(1)当依赖范围是system的时候,Maven直接从本地系统解析构件;
(2)根据依赖坐标计算仓库路径后,尝试直接从本地仓库寻找构件,如果发现相应构件,则解析成功;
(3)在本地仓库不存在相应构件的情况下,如果依赖的版本是显示的发布版本构件,如1.2、2.1-beta-1等,则遍历所有的远程仓库,发现后,下载并解析使用;
(4)如果依赖的版本是RELEASE或者LATEST,则基于更新策略读取所有远程仓库的元数据groupId/artifactId/maven-metadata.xml,将其与本地仓库的对应元数据合并后,计算出RELEASE或LATEST真实的值,然后基于这个真实的值检查本地或远程仓库,如步骤(2)和(3);
(5)如果依赖的版本是SNAPSHOT,则基于更新策略读取所有远程仓库的元数据groupId/artifactId/version/maven-metadata.xml,将其与本地仓库的对应元数据合并后,得到最新快照版本的值,然后检查本地或远程仓库进行下载;
(6)如果解析得到的构件版本是时间戳格式的快照,如1.41-20091104.121451-121,则复制其时间戳格式的文件至非时间戳格式,如SNAPSHOT,并使用该非时间戳格式的构件。
7.镜像
settings.xml中配置如下:
<settings> </mirrors> <mirror> <id>maven.net.cn</id> <name>one of the central mirrors in China</name> <url>http://maven.net.cn/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings>mirrorOf:指向被镜像仓库的ID;另外三个元素id、name、url与一般仓库无异。
更常见的用法是结合私服
<settings> </mirrors> <mirror> <id>internal-repository</id> <name>Internal Repository Manager</name> <url>http://192.168.1.100/maven2/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> </settings>
相关推荐
这本“数据仓库(第四版)”的教程可能是对这一主题的深入探讨,涵盖了数据仓库的基本原理、设计、实施以及最新发展。以下是该教程可能涉及的一些核心知识点: 1. **数据仓库定义**:数据仓库是一个集成的、非易失...
1. 库房的区域规划和外部距离 2. 新建、改建、扩建烟花爆竹储存工程项目的安全设施设计和施工 3. 储存烟花爆竹建设项目的安全设施设计和施工 4. 储存烟花爆竹的建设项目竣工投入使用前的安全设施验收 根据烟花爆竹...
在《数据仓库(原书中文第四版)》中,作者深入探讨了数据仓库的设计、构建和管理。这本书可能是由多个专家合著,每一版都可能包含了最新的理论发展和技术更新。中文版的出现使得中国读者能够更方便地理解和应用这些...
【四号定位仓库管理系统】 四号定位是一种仓库物资管理方法,通过使用四个号码来精确标识物资在仓库中的位置。这四个号码分别是库号、架号、层号和位号,它们共同构成了物资存储的坐标系统。例如,编号为2—12—3—...
四、源程序代码 源程序代码使用C++语言编写,包括以下几个部分: 1. 结构体定义:定义了一个名为`DataType`的结构体,包括商品编号、商品名称和商品数量三个字段。 2. 链表的定义:定义了一个名为`ListNode`的...
《数据仓库》一书,特别是第四版的中文翻译,深入浅出地探讨了这一主题。本篇将基于书中的核心内容,结合Oracle数据库系统,详细介绍数据仓库的理论与实践。 首先,我们需要理解数据仓库的基本概念。数据仓库是一个...
四、电源管理 1. 仓库内电器设备安装须符合电力设计规范和安全制度。 2. 化学易燃物品库房应安装防爆、隔离或密封式照明设备。 3. 电线主线应架设在库房外,引入库房的电线需用金属或硬质塑料套管保护。 4. 严禁在...
**第四章 火源管理** 1. 仓库内严禁吸烟和使用明火,外来人员和车辆需收缴火种。 2. 动用明火需经过审批,并采取安全措施,作业后要确保无火种遗留。 3. 商品入库前应检查是否有火种,必要时隔离观察。 **第五章 ...
数据仓库第四版
四、逻辑结构设计 1. 货物表:包含货物编号(主键)、货物名称、价格、数量和客户编号(外键)。 2. 供应商表:包含供应商编号(主键)、供应商名称、联系人、地址和电话号码。 3. 仓库管理员表:包含管理员编号...
**第四章:电源管理** 1. 电线和电器设备由专业电工安装维修,不得乱拉电线和超负荷使用。 2. 照明灯具与商品保持安全距离,工作结束后切断电源。 3. 定期检测电线绝缘,及时更新维护电器设备,禁止使用可能引发火灾...
仓库年底工作总结800字范文四篇.doc.pdf
仓库管理是与我们日常生活息息相关的问题。本文设计并实现了一个仓库管理信息系统。详细介绍了系统从需求分析,逻辑设计,总体设计,详细设计以及系统测试、实施各阶段的主要内容和成果。最后对实现系统的优缺点进行...
四、仓库安全管理标准 仓库安全管理标准是指仓库安全管理的要求,以确保仓储安全和物流效率。主要包括: 1. 库房安全:包括人身安全、物资安全、仓库设备安全及消防等方面。 2. 防止物资发生霉变、燃烧、爆炸、水...
#### 四、保管与储存 **1. 什么是保管?** - 保管是在保证物资质量和数量的前提下,采取合理的方式方法对物资进行保护、维护和管理的过程。 以上内容全面覆盖了仓库管理的基本概念、分类、作用及其管理的具体内容...
第四讲 数据仓库.pptx
库房管理人员的主要职责包括但不限于产品的入库、出库管理,确保仓库内的产品及其配件等物品的准确记录与安全存储。此外,还需要定期进行盘点,确保库存数据与实际相符,并协助相关部门处理物资发放等问题。 #### ...
四、火源管理 1. 禁止库区内吸烟和明火作业。 2. 电暖气的使用和维护由指定部门负责,不得随意挪动或覆盖。 3. 防止电暖气附近存放易燃物品,避免引发火灾。 五、消防设施 1. 仓库应按《建筑设计防火规范》配置消防...
数据仓库有四个关键特征: 1. 面向主题:数据仓库围绕特定的业务领域或主题组织,例如客户、销售或产品,提供对该领域的深度洞察。 2. 集成:来自不同数据源的数据经过清洗和转换,消除冗余和不一致性,形成统一视图...