《Maven实战》学习总结(四)——仓库
来源:互联网 发布:java方法中的作用 编辑:程序博客网 时间:2024/04/27 23:36
上篇文章我们介绍了Maven构件的逻辑表现形式--坐标和依赖,本篇文章将介绍Maven中构件的物理表示方式——仓库。在Maven出现之前,我们各个项目下一般都会有一个lib文件夹,里面存放项目依赖的所有构件,那么问题来了,各个项目中都有依赖相同的构件,这些完全相同的重复的构件分散在不同的项目里,占据着磁盘空间,难于管理。在坐标机制的基础上,Maven可以将各个项目共享的构件统一存储,这个统一的位置就是仓库。
构件的存储路径与Maven坐标的对应关系为:groupId/artifactId/version/artifactId-version.packaging。Maven仓库是基于简单文件系统存储的,以此我们在遇到问题时可以很方便的查找到相关文件,定位问题。
仓库构件来源:1.从远程仓库下载 2.clean install对项目进行构建并输出至仓库
Maven仓库的分类
1.本地:
默认本地仓库路径 -- 用户目录/.m2/repository
修改路径配置
<settings>
<localRepository>D:\java\repository\</localRepository>
</settings>
2.远程(中央仓库/私服/其他公共库)
Maven在查找构件时,先判断本地仓库是否存在,存在则返回,如不存在,则会去远程仓库查找,找到则加载到本地仓库,然后使用,本地/远程都没有找到则会报错。具体包含如下几种:
(1)中央仓库:Maven自带的远程仓库,包含有大部分开源构件,也因此使得Maven可以“开箱即用”
http://repo1.maven.org/maven2 (具体查看$M2_HOME/lib/maven-model-builder-3.0.jar --org/apache/maven/model/pom-4.0.0.xml)
(2)私服:在局域网内架设的远程仓库代理,可以降低访问外网的带宽占用,加快下载构件速度,降低中央仓库访问压力。也可将内部项目生成构件部署到私服上,供其他项目使用。
(3)其他公共仓库:
http://download.java.net/maven/2/,
http://repository.jboss.com/maven2/
远程仓库配置
POM中配置
遗留问题:
配置多个远程仓库的顺序?
构件版本指明,检查更新时的提醒?
1.认证
配置在settings.xml中:<servers>
2.部署至远程仓库
配置项目pom.xml:<distributionManagement>
mvn clean deploy
快照版本
如果没有快照版本,当多人协作时,实现不同的模块且模块之间存在依赖关系,此时为了实现模块间调用,需要指定版本号,但由于两个模块都处于开发中,都不稳定,被依赖模块会频繁变化。
站在依赖方角度,可取的解决方案有:1.迁出依赖模块代码,本地编译;2.指定固定版本,每次需要手动删除以来构建后再更新;3.双方不停更换版本,但这也意味着每次变动都需要级联进行修改,且是多处。
有了快照版本的概念,可以很好的解决上面的问题。Maven构建快照版本的构件时,会自动加上时间戳,当依赖方构件在构建过程中会按策略检查快照版本依赖的更新,如有新版本则取依赖的最新版本进行被依赖的构建活动。也可执行mvn clean install-U强制检查更新
镜像配置
<mirrors>
仓库搜索服务
http://www.mvnbrowser.com/、http://mvnrepository.com/ 、https://repository.sonatype.org、http://www.jarvana.com/jarvana
小结
本文介绍了Maven仓库的概念以及布局,分类及其使用上的配置,同时解释了快照的概念--方便协同开发时的版本控制,最后也汇总了一些仓库搜索服务,方便日常开发。
- 《Maven实战》学习总结(四)——仓库
- maven学习系列——(四)maven仓库
- Maven简介(四)——仓库
- Maven简介(四)——仓库
- Maven简介(四)——仓库
- Maven(四)——仓库
- Maven实战学习笔记(仓库)
- maven实战 学习记录- 仓库
- Maven学习总结(18)——深入理解Maven仓库
- Maven学习总结(18)——深入理解Maven仓库
- Maven学习总结(14)——深入理解Maven仓库
- Maven仓库(四)
- Maven(四)仓库
- Maven仓库(四)
- 《maven实战》读书笔记(三)——仓库
- 《maven实战》学习笔记5——maven仓库和镜像
- 学习笔记——Maven实战(四)基于Maven的持续集成实践
- Maven坐标——《Maven》实战学习总结
- 用队列来实现栈
- Burp suite与fuzzdb
- malloc的一些
- 基于zookeeper管理redis集群,实现消息路由(一)
- Codeforce 189B——Counting Rhombi
- 《Maven实战》学习总结(四)——仓库
- Hadoop学习笔记(1)-Hadoop生态系统
- 《Maven实战》学习总结(五)——生命周期和插件
- 《Maven实战》学习总结(六)——多项目构建问题解决方案:聚合和继承
- Spring Bean生命周期
- 基本的阈值操作
- 占位
- CodeForces 16D Logging
- “链栈”判断表达式中的括号是否正确配对