09_Maven核心_Maven和私服怎么关联在一起
通过前两节应该能够知道私服的搭建和使用:
下面将私服和Maven联系起来!
1.前面介绍过如果没有私服的情况下,Maven会直接使用超级POM中的*仓库去下载我们需要的构件:
<repository> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Maven Repository Switchboard</name> <url>http://repo1.maven.org/maven2</url> </repository>
有了这个*仓库,我们需要的构件基本都能下载到。但是为了节约一下带宽,等等原因。我们建立了私服。
前面已经介绍过镜像。我们可以通过镜像来代理我们的远程仓库。镜像的配置:
<mirror> <id>Nexus</id> <name>Nexus public mirror</name> <mirrorOf>central</mirrorOf> <url>http://localhost:8081/nexus/content/groups/public</url> </mirror>
这样如果请求的是*仓库central。都会转向请求私服。
看一下这里的URL:http://localhost:8081/nexus/content/groups/public
我们打开私服:
红色阴影部分的URL和镜像中的URL一样。这就是说:请求*仓库的request都会转向请求私服中的仓库组public repositories。然后再看看仓库组含有那些仓库:
这样请求*仓库会转向请求私服中的仓库组,然后再遍历仓库组,来查找需要的构件。也许你会问:这样还不是要请求*仓库才能下载到构件嘛,事实上是这样的,但只是第一次请求会去*仓库。因为私服会将下载的所有构建都保存在私服中,这样后面在来人参与项目开发,就会直接从私服中下载,不经过外网。
最后回顾一下Maven和私服之间的关联:镜像
构件请求流程:
请求构件-->进入*仓库-->*仓库被镜像-->请求私服-->请求仓库组-->依次遍历仓库组中的仓库-->找到所需的构件-->保存到私服(为下次下载做准备)-->下载到本地仓库。
中间的配置关系:
<dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.8.2</version> </dependency>
因为所有的POM都继承超级POM,所以会请求*仓库:
<repository> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Maven Repository Switchboard</name> <url>http://repo1.maven.org/maven2</url> </repository>
在setting中配置了镜像,这样所有的请求有进入到镜像中(私服):
<mirror> <id>Nexus</id> <name>Nexus public mirror</name> <mirrorOf>central</mirrorOf> <url>http://localhost:8081/nexus/content/groups/public</url> </mirror>
因为URL,所以请求私服中相应的仓库。
<url>http://localhost:8081/nexus/content/groups/public</url>
私服又会遍历仓库组中的仓库,下载构件
下一篇: 数据库的事务以及事务隔离级别