Maven系列学习(4)-仓库简介
来源:互联网 发布:淘宝手机充值代理加盟 编辑:程序博客网 时间:2024/04/30 05:18
Maven仓库是为了储存和管理Maven构件(如:Maven依赖和Maven插件)。因为仓库是储存Maven构件的,而任何一个构件都有一个唯一的坐标,这个坐标就可以定义其在仓库中的唯一存储路径。我们通过本地仓库,隐隐约约可以知道仓库路径大致是groupId/artifactId/version/artifactId-version.package。而我们在Maven源码中也证实了其存储的路径。
第一、仓库分类
仓库大致分为两类,本地仓库和远程仓库。当Maven根据构件坐标寻找构件时,首先查找本地仓库,如果本地仓库存在构件,则直接使用(更改classpath);如果本地仓库不存在,则需要在远程仓库中查找,并下载到本地仓库;如果本地仓库和远程仓库都没有,Maven会报错。其实Maven远程仓库还有一类特殊的仓库——私服。我们在项目开发之前,有必要在局域网创建一个私服,用途:1、代理所有外部的远程仓库;2、内部项目可以部署到私服;3、有时可避免没有外网的情况。仓库分类如下图:
1.1 本地仓库
默认情况下,每个用户在自己的用户目录下都有一个.m2/repository/的仓库目录。不过,很多时候,我们都不想在C盘储存太多的内容,这时,我们需要编辑~/.m2/setting.xml,设置如下:
<settings> <localRepository>E:/jars</localRepository></settings>
这样,用户的本地仓库目录就变成了E:/jars了。
构件必须存放在本地仓库后,才能供其他Maven项目使用。例如:A依赖B,而A和B都不能通过远程仓库获取,这时为了构件A,就得将B构建并安装到本地仓库。命令:mvn clean install。
1.2 中央仓库
Maven内置了一个远程仓库,我们称其为中央仓库。我们在maven-model-builder-3.0.5.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都是从这个pom继承。
1.3 私服
私服其实是本地仓库和远程仓库之间的一个桥梁。通过它,我们可以获取以下好处:
a、节省自己的外网宽带;
b、加速Maven构建(本地构建当然比远程构建快了);
c、可以部署第三方构件(如oracle的jdbc驱动包,由于许可证的缘故,不能从中央仓库获取);
d、提高稳定下(在没有外网的情况下);
e、降低中央仓库负荷。
第二、配置远程仓库
要想在项目中配置远程仓库,只需要在project节点下配置如下:
<repositories> <repository> <id>other-repo</id> <name>Other Repository</name> <url>http://other.org/maven2</url> <layout>default</layout> <release> <enabled>true</enabled> </release <snapshots> <enabled>false</enabled> </snapshots> </repository></repositories>当然,release和snapshots节点下还可以配置其他元素节点,在此不细说。
1、远程仓库认证,只需要认证用户名和密码,我们再settings.xml中配置上即可,如下图:
<servers> <server> <id>other-repo</id> <username>repo-user</username> <password>repo-pass</password> </server></servers>2、部署到远程仓库,配置如下:
<distributionManagement> <repository> <id>proj-r</id> <name>proj release</name> <url>...</url> </repository> <snapshotRepository> <id>proj-r</id> <name>proj release</name> <url>...</url> </snapshotRepository></distributionManagement>我们通过命令mvn clean deploy,就可以将项目构件部署到远程仓库。这儿的关键在于url和id的配置。
第三、仓库解析机制
我们知道,当本地仓库没有构件时,Maven会从远程仓库下载;当依赖版本为快照的时候,Maven会下载最新的快照。我们总结步骤如下:
a、依赖范围为system,直接从本地解析;
b、根据仓库坐标计算规则,尝试从本地解析构件,如果解析成功,则终止;
c、本地解析失败,如果依赖是发布版本,则依次遍历所有远程仓库,发现后,下载并解析,则终止;
d、如果依赖为快照版本(snapshot),则取最新快照版本。
第四、私服管理软件
我们使用Sonatype Nexus。后面我们会详细介绍这个软件的配置,以及如何使用。
- Maven系列学习(4)-仓库简介
- Maven仓库的简介,学习
- maven学习系列3----仓库
- Maven学习总结系列五:仓库
- maven学习系列——(四)maven仓库
- maven仓库简介
- maven仓库简介
- maven仓库学习
- Maven仓库基础知识学习
- maven学习系列——(一)maven简介
- Maven学习总结系列一:Maven的简介
- Maven 学习笔记十八:Maven仓库(maven仓库介绍)
- Maven学习笔记之十九:Maven仓库(maven仓库分类)
- Maven简介(四)——仓库
- Maven简介(四)——仓库
- Maven简介(四)——仓库
- maven学习之五 仓库
- Maven学习六:仓库-repository
- 大道至简,原来你就是这么KISS---ArchLinux基本系统到XFCE4桌面搭建【转载】
- 快速学习新技术的几条建议
- seo优化必知的网站全面分析策略
- Mahout并行频繁集挖掘算法源码分析(1)--实战
- IPCThreadState
- Maven系列学习(4)-仓库简介
- 34,UC(13)
- 美化代码的15个代码语法高亮工具
- android控件可以拖动处理方法
- Android——界面特效 相关知识总结贴
- Win32多线程之进程
- 去掉字符串中的空格
- thread_cleanup
- 35,UC(14) .