09_Maven核心_Maven和私服怎么关联在一起

通过前两节应该能够知道私服的搭建和使用:

07_Maven核心_搭建私服nexus

08_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>

 私服又会遍历仓库组中的仓库,下载构件

猜你喜欢

转载自zc985552943.iteye.com/blog/2092625
今日推荐