使用nexus搭建maven仓库(maven 本地私服)

 

  咱们在使用maven的时候,对于项目所依赖的jar包,maven默认会在中央仓库下载jar包,到本地的磁盘目录(若是没有配置则是用户目录下/.m2/repository文件夹下)。若是公司内部搭了一个maven私服的话,开发人员将仓库地址指向内网仓库地址,须要的jar包可直接在私服取,下载速度比远程要快,若是本地仓库没有则自动从远程下载并保存在本地。本文使用nexus搭建一个私服。web

1.下载 nexus

      在浏览器中搜索 Sonatype Nexus 进入官网,找到下载 。下载以后解压压缩包以下:apache

 

2.安装 nexus

进入nexus/bin/jws文件夹下看到以下图:windows

个人电脑是win7 32位,因此点开windows-x86-32 文件夹,双击install-nexus.bat 把nexus安装成一个服务,完成以后,在windows服务里边将看到以下图所示:浏览器

这时候在浏览器输入http://localhost:8081/nexus  将看到以下页面,说明安装成功maven

 

3.配置 nexus

 在第二步完成以后,点击nexus主要右上角的 Log In按钮,管理员初始密码为 admin/adming123  登录进去之点击 左侧的 【Repositories】菜单,会看的以下几个仓库测试

右键单击 Apache Snapshots ,和central 仓库,在右键菜单中点击 Update Index 更新jar索引this

默认状况下,nexus下载的索引,和jar包会保存在 nexus 同级目录下sonatype-work文件夹下url

例如个人nexus安装目录为:D:\Devolopment\nexus-2.7   则 下载的jar和索引会保存在D:\Devolopment\sonatype-work 下,点开snoatype-work -->nexus 会看到 indexer、storage文件夹,可点进去看看spa

一些简单配置:3d

点击Apache Snapshots仓库,进行以下配置,开启远程索引下载,点击save按钮

将现有的仓库,Apache snapshots ,3dpart,central 等仓库 加入 public 组中,直接在在界面中 将右侧的仓库移左边,效果以下:

 

4.在 maven 中使用 nexus

 找到maven的配置文件,即:apache-maven-3.1.1/conf 下的settings.xml

在mirrors节点下加入以下配置

 

  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
      
    <mirror>
      <id>nexus</id>
      <mirrorOf>central</mirrorOf>
      <name>internal nexus repository</name>
      <url>http://localhost:8081/nexus/content/groups/public/</url>这一段配置,描述的即是 上一步中提到的那个Public Reposiories的信息,这个地址即是他的地址,这些写均可以再界面上看到 
    </mirror>这里的是localhost是在本机搭建测试用的,若是是公司内部的仓库的话,可自行修改为公司内网ip地址。
  </mirrors>

 

 

 

如此,配置以后,在咱们使用maven的时候,就会经过私服了。而不是直接从远程取了。(没有配置以前,maven默认在远程的中央仓库下载)

 

在这个配置文件中,有个节点 叫localRepository 是用来配置 maven下载的jar包存放的地址的,若是不配置的话,jar包将会下载到c盘用户文件夹下.m2 文件夹下。此处可指定目录,以下

则maven下载的jar包会保存在 D:/Devolopment/MavenRepository 下

 总结,你们nexus以后使用情形以下图

 

5.如何发布项目到maven私服

咱们搭建好私服以后,除了能够快速的下载 jar 包,更重要的时候,咱们能够发布本身的项目/模块到私服中,而后能够方便你们共用。

好比,咱们的项目是一个商场项目,项目模块是这样的:

 

shoo-parent pom
shop-user jar
shop-search jar
shop-product jar
shop-web war

 

如图所示,我简单了列出了一个大项目可能具备的模块,实际项目模块更多。一般状况下,每一个人负责的项目不一样。比方说张三负责开发 shop-user,李四负责 shop-web, shop-web须要引用 shop-user 。若是张三开发完了,如何把 jar 提供给李四用呢?发到私服就行了。李四开发的 shop-web,在pom 文件中引入以下依赖:

<dependency>
            <groupId>org.myshop</groupId>
            <artifactId>shop-user</artifactId>
            <version>0.0.1</version>
</dependency>

张三将 shop-user 发到私服就好了,发布须要执行   mvn deploy 命令。

在执行此命令以前,须要作一些配置。

5.1 修改 pom文件

比方说,咱们须要发布shop-user到私服。咱们须要在shop-user的 pom 文件中增长以下配置:

    <distributionManagement>
        <snapshotRepository>
            <id>my-shop-snapshots</id> 这个 ID 很重要,后面要用到
            <name>snapshot repository</name>
            <url>http://192.168.xx.xx:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>my-shop-releases</id>
            <name>releases repository</name>
            <url>http://192.168.xx.xx:8081/nexus/content/repositories/releases/</url>
        </repository>
    </distributionManagement>      

 

配置中的 id 节点配置的 my-shop-snapshots 是自定义的,这个 ID 后面会用到。 url 节点对应的是你的私服链接。 

 5.2 修改 maven 的 setting.xml文件

继续修改 maven 的配置文件,打开apache-maven-3.1.1/conf 下的settings.xml ,在<servers> 节点中间加入以下配置:

   <server>  
    <id>my-shop-releases</id>  
    <username>admin</username>  
    <password>admin123</password>  
   </server>  
   <server>  
    <id>my-shop-snapshots</id>  
    <username>admin</username>  
    <password>admin123</password>  
   </server>   

这里的 id 对应的就是咱们上面5.1 中配置的 ID。username ,password对于的是咱们 nexus 私服的登陆密码。若是这个用户名或密码配置错误的话就会报错,mvn deploy 不成功。

配置完了以后,在 shop-user项目的目录下执行 :   mvn delpoy -Dmaven.test.skip=true,能够看到相似以下日志:

Uploading to my-shop-snapshots: http://192.168.xx.xx:8081/nexus/content/repositories/snapshots/com/myshop/shop-user/0.0.5-SNAPSHOT/maven-metadata.xml (483 B at 15 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.011 s
[INFO] Finished at: 
[INFO] Final Memory: 31M/411M
[INFO] --------------------------------------------------------------------

从日志Uploading to my-shop-snapshots: http://192.168.xx.xx:8081/ 就看到,咱们的 jar 上传的地址是咱们本身的私服地址了。

这时去私服窗口检索一下就能够看到刚 deploy 的 jar 文件了。

相关文章
相关标签/搜索