【读书笔记】《Maven实战》第6章 仓库
- 6.1什么是Maven仓库?
- Maven仓库:存储所有Maven项目共享的构件的统一位置。
- Maven仓库的作用:Maven项目仅需声明依赖坐标,即可在需要的时候自动根据坐标找到仓库中的构件。
- 6.2仓库的布局
- Maven仓库布局方式:根据构件的唯一的坐标,可以确定其在仓库中的唯一存储路径。
- 示例:构件groupId=org.testng、artifactId=testng、version=5.8、classifier=jdk15、packaging=jar
- 1)使用groupId:org.testng对应路径org/testng/
- 2)使用artifactId:testng对应路径为testng,总路径为/org/testng/testng
- 3)使用version:5.8对应路径为5.8,总路径为org/testng/testng/5.8
- 4)使用artifactId和version创建jar包前缀:jar包前缀为testng-5.8,总路径为org/testng/testng/5.8/testng-5.8
- 5)如果有classifier,使用classifier:jar包文件名变为testng-5.8-jdk5,总路径为org/testng/testng/5.8/testng-5.8-jdk5
- 6)使用packaging:总路径为org/testng/testng/5.8/testng-5.8-jdk5.jar
- 因此,构建存在org/testng/testng/5.8/testng-5.8-jdk5.jar路径下
- 问题排查:当无法获得声明的依赖时,可检查在仓库中是否存在
- 6.3仓库的分类
- Maven仓库分类
- 本地仓库
- 远程仓库
- 中央仓库
- 私服
- 其他公共库
- 构件搜索规则:
- 1)查找本地仓库
- 2)本地仓库找不到,查找远程仓库
- 3)都找不到,报错
- 6.3.1本地仓库
- Linux默认地址:用户目录下home/username/.m2/repository/
- 如何修改本地仓库地址?修改~/.m2/settings.xml
- 安装构件到本地仓库:mvn clean install
- 6.3.2远程仓库
- 6.3.3中央仓库
- 默认的远程仓库,Maven自带中央仓库配置
- id:仓库的唯一标识,中央仓库为central
- layout:默认仓库布局,即6.2中介绍的布局
- snaoshots:为false,表示不从改仓库下载快照版本的构件
- 默认的远程仓库,Maven自带中央仓库配置
- 6.3.4私服
- 私服:架设在局域网内的仓库服务,私服【代理】广域网上的远程仓库,供局域网内的Maven用户使用
- 构件下载规则:
- 1)当需要下载构件时,先从私服请求
- 2)如果私服上找不到,从外部远程仓库下载,缓存在私服
- 3)私服提供构件下载服务
- 私服好处:
- 1)节省自己外网带宽
- 2)加速Maven构建
- 3)部署第三方构件。
- 4)提供稳定性,增强控制。因无需访问Internet,克服网络不稳定问题。
- 5)克服中央仓库负荷。
- 私服:架设在局域网内的仓库服务,私服【代理】广域网上的远程仓库,供局域网内的Maven用户使用
- Maven仓库分类
- 6.4远程仓库的配置
- 示例:添加JBoss Maven仓库为远程仓库
- id:任何一个仓库的di必须是唯一的!maven自带中央仓库id为central,如果别的仓库声明id为central,则自带中央仓库会被覆盖!
- releases:enabled为true,表示会下载release版本的构件
- snapshots:enabled为false,表示不会下载SNAPSHOT版本的构件
- 6.4.1远程仓库认证
- 远程仓库认证:需要用户名密码才能访问远程仓库
- 示例:配置settings.xml,配置id为my-proj仓库的认证信息。注意:id必须与POM中需要认证的repository中的仓库id完全一样。
- 6.4.2部署至远程仓库
- 示例:编辑项目的pom.xml,配置构件部署地址
- repository:发布release版本构件的仓库
- snapshotRepository:发布SNAPSHOT版本的仓库
- 发布命令:mvn clean deploy
- 示例:编辑项目的pom.xml,配置构件部署地址
- 示例:添加JBoss Maven仓库为远程仓库
- 6.5 快照版本
- 建议:快照版本不稳定,不应该依赖任何外部的快照版本依赖
- 6.6 从仓库解析依赖的机制
- 6.7镜像
- 镜像:仓库X可提供仓库Y存储的所有内容,X即为Y的镜像
- 举例:http://maven.net.cn/content/groups/public是中央仓库http://repo1.maven.org/maven2/在中国的镜像,配置该镜像替代中央仓库
- mirrorOf值为中央仓库central,任何对中央仓库的请求都会转到该镜像(理解:相当于替代作用)
- 注意:镜像仓库屏蔽了非镜像仓库,当镜像仓库不稳定或停止服务,Maven将无法访问被镜像仓库
- 6.8仓库搜索服务
- 如何寻找到需要的依赖
- Sonatype Nexus地址:http://repository.sonatype.org/
- Jarvana地址:http://www.jarvana.com/jarvana/
- MVNbrowser地址:http://www.mvnbrowser.com
- MVNrepository地址:http://mvnrepository.com/
【读书笔记】《Maven实战》第6章 仓库的更多相关文章
- 学习笔记-[Maven实战]-第三章:Maven使用入门(1)
说明:[Maven实战]一书还介绍了怎么样手工创建Maven工程,学习这本书是为了能尽快在工作中使用,就忽略了手工建工程的部分 如果想了解这部分的内容,可以自己看看书 开始: 1.新建一个maven工 ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(3)
这里说一下在建测试工程里遇到的问题 1.第一次建工程,junit依赖始终没有成功,最后删除现在工程,新建了一个工程就好了 2.使用junit4的问题.工程默认的依赖是junit3.8.1,我改成了4. ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(2)
使用maven执行编译和测试 1.maven执行编译 (1).在pom.xml上点右键,选择Maven build... (2).在Goals里输入clean complie,执行编译 执行结果: [ ...
- AngularJS in Action读书笔记6(实战篇)——bug hunting
这一系列文章感觉写的不好,思维跨度很大,原本是由于与<Angularjs in action>有种相见恨晚而激发要写点读后感之类的文章,但是在翻译或是阐述的时候还是会心有余而力不足,零零总 ...
- 学习笔记——Maven实战(四)基于Maven的持续集成实践
Martin的<持续集成> 相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订 ...
- [Maven实战](6)仓库(本地仓库,远程仓库,镜像)
1. 简单介绍 maven能够在某个位置统一存储全部maven项目共享的构件,这个统一的位置就是仓库.实际的Maven项目将不会各自存储其依赖文件,它们仅仅须要声明这些依赖的坐标,在须要的时候(比如. ...
- 学习笔记——Maven实战(六)Gradle,构建工具的未来?
Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...
- 学习笔记——Maven实战(七)常用Maven插件介绍(上)
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了 ...
- 学习笔记——Maven实战(八)常用Maven插件介绍(下)
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...
- Unity Shader入门精要读书笔记(一)序章
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...
随机推荐
- linux下分割和重组文件
linux shell命令里的split和cat命令可以轻松完成这两个功能,举个例子来说,比如一个1GB大小的文件foo.zip,以100M为块分割: 分割: split -b 100M -d foo ...
- LeetCode(48)-Length of Last Word
题目: Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return t ...
- 新手入门vue 使用vue-cli创建项目
本文是针对对于完全没有了解过vue 和npm,连运行环境和项目构建的都不会的小白,对于前端老司机的就不用看了,浪费时间. 使用npm 与vue-cli 构建vue 项目 第一步:安装运行环境(node ...
- word search(二维数组中查找单词(匹配字符串))
Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...
- JavaScript继承详解
面向对象与基于对象 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例. 类定义了一类事物公共的行为和方法:而实例则是类的一个具体实现. 我们还知道,面向对象编程有三个重要的概念 - 封装.继 ...
- 使用Python自动提取内容摘要
https://www.biaodianfu.com/automatic-text-summarizer.html 利用计算机将大量的文本进行处理,产生简洁.精炼内容的过程就是文本摘要,人们可通过阅读 ...
- Ubuntu硬盘空间清理
1.删除多余的安装下载文件: sudo aptitude autoclean sudo aptitude clean 2.删除多余的内核版本: sudo apt-get autoremove 4.去/ ...
- linux常用命令合集(未完)
(1)新建 新建文件夹:mkdir 文件夹名 新建文件:touch 文件路径/文件名 删除: rm –f filename删除文件 rm –rf filename删除文件夹 (2)重命名 1将一个名为 ...
- java书写、数据类型、数组定义
这里只记录java与php.javascript不同的地方,相同的地方就不赘述了. 1.java文件源码为以.java为后缀的文件,字节码文件是以.class为后缀的文件. 2.写好一个java源码之 ...
- ExtJs Sencha Cmd创建项目以及编译项目
一:创建项目 sencha sdk tool2.0无法创建api为sencha-touch-2.2.1的项目,需要使用SenchaCmd代替sencha sdk tool,其步骤如下: 1,下载安装s ...