博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven学习(七)仓库
阅读量:4540 次
发布时间:2019-06-08

本文共 4144 字,大约阅读时间需要 13 分钟。

* Maven仓库

         在项目开发中,  项目目录下往往会有一个lib目录,用来存放第三方依赖jar文件, 如spring log4j jar等文件,

         Maven仓库就是放置JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,节省了磁盘资源,

         也节省了时间 不用拷来拷去的。

         此外,由于Maven仓库中所有的JAR都有其自己的坐标,该坐标告诉Maven它的组ID,构件ID,版本,打包方式等等,因此Maven项目可以方便的进行依赖版本管理。

         你也不在需要提交JAR文件到SCM仓库中,你可以建立一个组织层次的Maven仓库,供所有成员使用。

* 仓库分类

在运行Maven的时,Maven所需要的依赖构件都是直接从本地仓库获取的,如果本地仓库有依赖构建,直接使用;

如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

* 本地仓库缺省地址在${user.home}/.m2/repository目录下,(例如:C:\Documents and Settings\Administrator\.m2\repository)

自定义本地仓库位置:

      配置进入maven/conf目录 编辑settings.xml文件 修改localRepository节点

 *中央仓库 是一个默认的远程仓库,  安装好Maven之后,我们可以建立一个简单的项目,配置一些简单的依赖,然后运行mvn clean install,项目就构建好了。我们没有手工的去下载任何jar文件,这一切都是因为Maven中央仓库的存在,当Maven在本地仓库找不到需要的jar文件时,它会查找远程仓库,而一个原始的Maven安装就自带了一个远程仓库——Maven中央仓库。 这个Maven中央仓库是在apache-maven3\lib\maven-model-builder-3.0.4.jar中定义,

  超级POM: \org\apache\maven\project\pom-4.0.0.xml

 *私服是一种特殊的远程仓库  为了节省宽带资源和时间 应该在局域网内架设一个私有的仓库服务器,私服代理广域网上的远程仓库, 供局域网内的Maven用户使用,

  当Maven需要下载构建的时候,先给私服仓库发出请求, 如果私服上不存在构建,则从外部的远程仓库下载,缓存到私服仓库中,再为maven的下载请求提供服务。

 

* 远程仓库配置

1.编辑项目pom文件

maven-net-cn
Maven China Mirror
http://maven.net.cn/content/groups/public/
true
false
maven-net-cn
Maven China Mirror
http://maven.net.cn/content/groups/public/
true
false

 repositories节点下,可以有多个repository,每个repository都有一个唯一的ID,一个name,以及最重要的,远程仓库的url。

此外<releases><enabled>true</enabled></releases>告诉Maven可以从这个仓库下载releases版本的构件,而<snapshots><enabled>false</enabled></snapshots>告诉Maven不要从这个仓库下载snapshot版本的构件。

2.在settings.xml中配置全局的远程仓库  

在每个项目的pom中配置远程仓库 只是针对当前项目,  如果有10个项目  那就要配置10次  重复配置可以做到只配置一次,就是在settings.xml中做全局配置

...
dev
dev
...

 

* 远程仓库认证

编辑conf/settings.xml文件

和pom文件中repository->id元素相同
/path/to/private/key
optional; leave empty if not used.

server元素的id必须和pom中需要认证的repository元素完全一直。

 

* 构建部署至远程仓库

  mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库。

本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。

配置POM的distributionManagement来指定Maven的部署位置

...
nexus-releases
Nexus Release Repository
http://127.0.0.1:8088/nexus/content/repositories/releases/
nexus-snapshots
Nexus Snapshot Repository
http://127.0.0.1:8088/nexus/content/repositories/snapshots/
...

Maven区别对待release版本的构件和snapshot版本的构件,snapshot为开发过程中的版本,实时,但不稳定,release版本则比较稳定。

Maven会根据你项目的版本来判断将构件分发到哪个仓库。

 一般来说,分发构件到远程仓库需要认证,如果你没有配置任何认证信息,你往往会得到401错误。这个时候,如下在settings.xml中配置认证信息:

...
nexus-releases
username
password
nexus-snapshots
username
password
...

 

* 镜像

...
maven-net-cn
Maven China Mirror
http://maven.net.cn/content/groups/public/
central
...

 

转载于:https://www.cnblogs.com/yangxia-test/p/4409833.html

你可能感兴趣的文章
左神算法书籍《程序员代码面试指南》——1_01设计一个有getMin功能的栈
查看>>
左神算法进阶班8_1数组中累加和小于等于aim的最长子数组
查看>>
IT技术博客
查看>>
左神算法书籍《程序员代码面试指南》——1_05用一个栈实现另一个栈的排序
查看>>
视频资源收集
查看>>
PAT甲级——A1005 Spell It Right
查看>>
PAT甲级——【牛客练习题1002】
查看>>
左神算法书籍《程序员代码面试指南》——1_06用栈来求解汉诺塔问题
查看>>
PAT甲级——A1007 Maximum Subsequence Sum
查看>>
Dijkstra算法
查看>>
左神算法书籍《程序员代码面试指南》——1_02由两个栈组成的队列
查看>>
左神算法书籍《程序员代码面试指南》——1_10最大值减去最小值小于或等于num的子数组数量...
查看>>
左神算法书籍《程序员代码面试指南》——1_03如何使用递归函数和栈操作逆序一个栈...
查看>>
左神算法书籍《程序员代码面试指南》——2_02在单链表和双链表中删除倒数第k个字节...
查看>>
左神算法书籍《程序员代码面试指南》——2_03删除链表的中间节点和a/b处的节点...
查看>>
左神算法书籍《程序员代码面试指南》——1_04猫狗队列
查看>>
PAT甲级——A1006 Sign In and Sign Out
查看>>
PAT甲级——A1016 Phone Bills
查看>>
PAT甲级——A1008 Elevator
查看>>
PAT甲级——A1009 Product of Polynomials
查看>>