一.作用
我们所拆分的模块是可以在同一个公司各个项目组之间的项目组之间进行资源共享的,这就需要Maven的私服来实现。
二.场景
两个项目组之间如何基于私服进行资源的共享的呢?
例如A开发了一个模块tlias-utils,B团队进行项目开发,要想使用tlias-utils中提供的工具类,怎么办呢?在pom.xml文件中引入对应的坐标。
当B团队在maven项目的pom.xml配置文件中引入依赖之后,maven如何查找这个依赖?查找顺序:
(1)本地仓库:只在A团队的本地仓库有这个依赖jar包,B的本地仓库没有。
(2)远程中央仓库:中央仓库全球只有一个,不是什么人都可以往中央仓库中来上传jar包的,我们是没有权限操作的。
所以此时maven的私服就出场了,私服其实就是架设在公司局域网内部的一台服务器,就是一种特殊的远程仓库。
这样各个团队可以连接私服上传jar包,如果我们在项目中需要使用其他第三方提供的依赖,如果本地仓库没有,也会自动连接私服下载,如果私服没有,私服此时会自动连接中央仓库,去中央仓库中下载依赖,然后将下载的依赖存储在私服仓库及本地仓库中。
三.概念
【1】私服:是一种特殊的远程仓库,它是假设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步的问题。
【2】依赖查找顺序:
本地仓库->私服仓库->中央仓库
四.具体步骤
资源的上传与下载,我们需要做三步配置,执行一条指令。
第一步配置:在maven的配置文件中配置访问私服的用户名和密码。--在自己maven安装目录下的conf/setting.xml中的servers中配置。例:
<server><id>maven-releases</id><username>admin</username><password>admin</password>
</server><server><id>maven-snapshots</id><username>admin</username><password>admin</password>
</server>
第二步配置:在maven的配置文件中配置连接私服的地址(url地址,依赖下载的仓库组地址)--在自己maven安装目录下的conf/settings.xml中的mirrors,profiles中配置。例:
<mirror><id>maven-public</id><mirrorOf>*</mirrorOf><url>http://192.168.150.101:8081/repository/maven-public/</url>
</mirror><profile><id>allow-snapshots</id><activation><activeByDefault>true</activeByDefault></activation><repositories><repository><id>maven-public</id><url>http://192.168.150.101:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
</profile>
第三步配置:IDEA的maven工程的pom文件中配置上传(发布地址)--直接在tlias-parent中配置发布地址。例:
<distributionManagement><!-- release版本的发布地址 --><repository><id>maven-releases</id><url>http://192.168.150.101:8081/repository/maven-releases/</url></repository><!-- snapshot版本的发布地址 --><snapshotRepository><id>maven-snapshots</id><url>http://192.168.150.101:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>
配置好了上述三步之后,要上传资源到私服仓库,就执行maven声明周期:deploy。
补充:
【1】私服仓库说明:
RELEASE:存储自己开发的RELEASE发布版本的资源。
SNAPSHOT:存储自己开发的SNAPSHOT发布版本的资源。
Central:存储的是从中央仓库下载下来的依赖。
【2】项目版本说明:
RELEASE(发布版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。