Sonatype Nexus 搭建Maven 私服

来源:互联网 发布:炉石传说新手入门知乎 编辑:程序博客网 时间:2024/05/20 14:15

1、 为什么使用Nexus

        如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。


2、Nexus下载

       下载地址:http://www.sonatype.org/nexus/go


3、Nexus启动

       我下载的是zip包,解压后进入\nexus-2.1.2-bundle\nexus-2.1.2\bin\jsw\,根据操作系统类型选择文件夹,我选的是windows-x86-32文件夹,进入后可看到如下所示bat文件。

图(1)
双击console-nexus.bat运行。游览器中输入http://127.0.0.1:8081/nexus/,出现图(2)所示就代表nexus已经启动成功。

图(2)

8081为默认的端口号,要修改端口号可进入nexus-2.1.2-bundle\nexus-2.1.2\conf\打开nexus.properties文件,修改application-port属性值就可以了。


默认的用户名和密码:admin/admin123,登录后看到图(3)所示:

图(3)


 

4、Nexus仓库

     nexus的仓库类型分为以下四种:

               group: 仓库组

               hosted:宿主

              proxy:代理

              virtual:虚拟

            首次登陆nexus后可以看到以下一个仓库组和多个仓库。


图(4)

                       Public Repositories:  仓库组

                      3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库

                      Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库

                      Central: 用来代理maven中央仓库中发布版本构件的仓库

                      Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库

                      Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库

                      Releases: 用来部署管理内部的发布版本构件的宿主类型仓库

                      Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库

5、配置nexus

5.1、开启远程索引

新搭建的neuxs环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus默认是关闭远程索引下载,最重要的一件事情就是开启远程索引下载。登陆nexus系统,默认用户名密码为admin/admin123。

点击左边Administration菜单下面的Repositories,找到右边仓库列表中的三个仓库Apache Snapshots,Codehaus Snapshots和Maven Central,然后再没有仓库的configuration下把Download Remote Indexes修改为true。如下图

 

 

然后在Apache Snapshots,Codehaus Snapshots和Maven Central这三个仓库上分别右键,选择Repari Index,这样Nexus就会去下载远程的索引文件。

 

 

 

 

这样设置以后, Nexus会自动从远程中央仓库下载索引文件, 为了检验索引文件自动下载是否生效,可以却换到Browse Index

 

 

在左边菜单栏里面有个Artifact Search, 在输入框里面输入你想要搜索的构件名字,比如:maven, 那么查询结果如下:

 

 

5.2建立宿主仓库

新 建公司的内部仓库,步骤为Repositories –> Add –> Hosted Repository,在页面的下半部分输入框中填入Repository ID和Repository Name即可,比如分别填入

zfy 和 zfy repostiory,另外把Deployment Policy设置为Allow Redeploy,点击save就创建完成了。

这里我点击添加宿主类型的仓库,在仓库列表的下方会出现新增仓库的配置,如下所示:

图(6)

点击save按钮后就会在仓库列表中看到刚才新增的仓库。


 

 

5.3、创建Nexus仓库组

Nexus 中仓库组的概念是Maven没有的,在Maven看来,不管你是hosted也好,proxy也好,或者group也好,对我都是一样的,我只管根据 groupId,artifactId,version等信息向你要构件。为了方便Maven的配置,Nexus能够将多个仓库,hosted或者 proxy合并成一个group,这样,Maven只需要依赖于一个group,便能使用所有该group包含的仓库的内容。

neuxs- 1.9.2.3中默认自带了一个名为“Public Repositories”组,点击该组可以对他保护的仓库进行调整,把刚才建立的公司内部仓库zfy repostiory加入其中,这样就不需要再在maven中明确指定内部仓库 的地址了。同时创建一个Group ID为public-snapshots、Group Name为Public Snapshots Repositories的组,把Apache Snapshots、Codehaus Snapshots、Snapshots和zfy repostiory加入其中。

 

 

 

 

 

 

 

到这里neuxs的安装配置就完成了,下面介绍如何在maven中使用自己的私服。

 

 

 

5.4、创建Nexus代理仓库

点击菜单栏上的Add按钮后选择Proxy Repository,看到如下所示配置界面:

图(7)

      以上本人分别创建 了  hosted和group ,没有创建proxy,经maven测试通过。
 
 
6、      settings.xml的配置
[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"   
  3.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  5.   
  6.   <pluginGroups></pluginGroups>  
  7.   <proxies></proxies>  
  8.   
  9.   <servers>  
  10.       <server>  
  11.       <id>nexus-releases</id>  
  12.       <username>admin</username>  
  13.       <password>admin123</password>  
  14.     </server>  
  15.     <server>  
  16.       <id>nexus-snapshots</id>  
  17.       <username>admin</username>  
  18.       <password>admin123</password>  
  19.     </server>  
  20.   </servers>  
  21.   
  22.   <mirrors>   
  23.     <mirror>   
  24.       <id>nexus-releases</id>   
  25.       <mirrorOf>*</mirrorOf>   
  26.       <url>http://localhost:8081/nexus/content/groups/public</url>   
  27.     </mirror>  
  28.     <mirror>   
  29.       <id>nexus-snapshots</id>   
  30.       <mirrorOf>*</mirrorOf>   
  31.       <url>http://localhost:8081/nexus/content/groups/public-snapshots</url>   
  32.     </mirror>   
  33.   </mirrors>   
  34.    
  35.   <profiles>  
  36.    <profile>  
  37.       <id>nexus</id>  
  38.       <repositories>  
  39.         <repository>  
  40.           <id>nexus-releases</id>  
  41.           <url>http://nexus-releases</url>  
  42.           <releases><enabled>true</enabled></releases>  
  43.           <snapshots><enabled>true</enabled></snapshots>  
  44.         </repository>  
  45.         <repository>  
  46.           <id>nexus-snapshots</id>  
  47.           <url>http://nexus-snapshots</url>  
  48.           <releases><enabled>true</enabled></releases>  
  49.           <snapshots><enabled>true</enabled></snapshots>  
  50.         </repository>  
  51.       </repositories>  
  52.       <pluginRepositories>  
  53.          <pluginRepository>  
  54.                 <id>nexus-releases</id>  
  55.                  <url>http://nexus-releases</url>  
  56.                  <releases><enabled>true</enabled></releases>  
  57.                  <snapshots><enabled>true</enabled></snapshots>  
  58.                </pluginRepository>  
  59.                <pluginRepository>  
  60.                  <id>nexus-snapshots</id>  
  61.                   <url>http://nexus-snapshots</url>  
  62.                 <releases><enabled>true</enabled></releases>  
  63.                  <snapshots><enabled>true</enabled></snapshots>  
  64.              </pluginRepository>  
  65.          </pluginRepositories>  
  66.     </profile>  
  67.   </profiles>  
  68.   
  69.   <activeProfiles>  
  70.       <activeProfile>nexus</activeProfile>  
  71.   </activeProfiles>  
  72.    
  73. </settings>  
[html] view plaincopyprint?
  1.    
[html] view plaincopyprint?
  1. 7、 maven 项目 的pom.xml配置  
[html] view plaincopyprint?
  1.    
[html] view plaincopyprint?
  1. <pre class="html" name="code"> <distributionManagement>  
  2.         <!-- 两个ID必须与 setting.xml中的<server><id>nexus-releases</id></server>保持一致-->  
  3.         <repository>  
  4.             <id>nexus-releases</id>  
  5.             <name>Nexus Release Repository</name>  
  6.             <url>http://localhost:8081/nexus/content/repositories/releases</url>  
  7.         </repository>  
  8.         <snapshotRepository>  
  9.             <id>nexus-snapshots</id>  
  10.             <name>Nexus Snapshot Repository</name>  
  11.             <url>http://localhost:8081/nexus/content/repositories/snapshots</url>  
  12.         </snapshotRepository>  
  13.     </distributionManagement></pre><pre class="html" name="code"> </pre><pre class="html" name="code">8、mvn:deploy命令上传包,会发现下载路径必不是中央库的路径,而是nexus里面的仓库组路径。这个说明配置环境成功。</pre><pre class="html" name="code"><img alt="" src="http://img.my.csdn.net/uploads/201301/10/1357787083_3866.png"><img alt="" src="http://img.my.csdn.net/uploads/201301/10/1357787109_8992.png"></pre><pre class="html" name="code"> </pre>  
  14. <pre></pre>  
  15. <pre></pre>  
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信视频已过期或已清理怎么办 视频已过期或已被清理怎么办 小孩作业不会老婆天天吵骂打怎么办 苹果手机在太阳下屏幕变暗怎么办 斗鱼的鱼丸竞猜主播结算了怎么办 附近有个小姐姐想加她好友怎么办 孩子出现听别人说话语速很快怎么办 苹果手机上的邮件删了怎么办 手机qq邮箱独立密码忘记了怎么办 哺乳期吃了人参回奶了怎么办? 扣扣邮箱里的邮件过期了怎么办 一体机的管理员账号被删除了怎么办 手机里的邮箱重要吗删除了怎么办 华为荣耀10账号邮箱忘记了怎么办 大陆微信号在台湾登录不上怎么办 威纶触摸屏被禁止到反编译了怎么办 微信公众号邮箱被占用怎么办 京东绑定的手机号不用了怎么办 绑定微信的手机号不用了怎么办 绑定支付宝的手机号不用了怎么办 百度账号手机号换了密码忘了怎么办 换手机好了华为账号密码忘了怎么办 苹果手机忘了id账号和密码怎么办 金立手机账号密码忘了怎么办 乐视手机账号密码忘了怎么办 企业邮箱发出去邮件撤不回来怎么办 餐厅加热保温设备零线带电怎么办 小米手机不小心把照片删了怎么办 华为手机不小心把照片删了怎么办 网易邮箱被改成别人的姓名怎么办 苹果手机忘记id密码和邮箱怎么办 163邮箱下载的附件没有了怎么办 小米自带浏览器打开网页太慢怎么办 再歪一点授权码忘记了怎么办 注册支付宝的手机号不用了怎么办 手机号被别人注册了支付宝怎么办 支付宝账号密码都忘了怎么办 申请微信公众号邮箱被占用怎么办 邮箱注册微博需要手机验证怎么办 苹果手机的ad码忘记了怎么办 苹果手机酷狗音乐没有声音怎么办