设为首页 收藏本站
查看: 2221|回复: 0

[经验分享] Nexus仓库构建

[复制链接]

尚未签到

发表于 2017-3-3 08:01:27 | 显示全部楼层 |阅读模式
  1 . 私服简介
  私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
DSC0000.png                                                  DSC0001.png

  我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus。这里我们使用 Sonatype Nexus。
  2 . 安装Nexus
  2 . 1 . 下载Nexus
  Nexus 专业版是需要付费的,这里我们下载开源版 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包。下载地址:http://www.sonatype.org/nexus/go。
DSC0002.png

  2 . 2 . 使用bundle安装包安装Nexus
  解压安装包nexus-2.8.1-bundle.zip,打开命令提示符,进入/nexus-2.8.1-01目录,键入nexus命令(为方便启动和退出Nexus,可将bin目录添加到环境变量):
DSC0003.png

  执行 nexus install 将Nexus安装为Windows服务。可将服务启动方式设为手动,以后通过 nexus start 即可启动Nexus ,通过 nexus stop 退出Nexus:
DSC0004.png

DSC0005.png

  打开浏览器,访问:http://localhost:8081/nexus/ (Jetty 默认端口号:8081):
DSC0006.png

  点击右上角 Log In,使用用户名:admin ,密码:admin123 登录,可使用更多功能:
DSC0007.png

  3 . Nexus预置的仓库
  点击左侧 Repositories 链接,查看 Nexus 内置的仓库:
   DSC0008.png
  Nexus 的仓库分为这么几类:


  • hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)以及自己或第三方的项目构件;
  • proxy 代理仓库:代理公共的远程仓库;
  • virtual 虚拟仓库:用于适配 Maven 1;
  • group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。
DSC0009.png

  4 . 添加代理仓库
  以 Sonatype 为例,添加一个代理仓库,用于代理 Sonatype 的公共远程仓库。点击菜单 Add - Proxy Repository :
DSC00010.png

  填写Repository ID - sonatype;Repository Name - Sonatype Repository;
  Remote Storage Location - http://repository.sonatype.org/content/groups/public/ ,save 保存:
DSC00011.png

  将添加的 Sonatype 代理仓库加入 Public Repositories 仓库组。选中 Public Repositories,在 Configuration 选项卡中,将 Sonatype Repository 从右侧 Available Repositories 移到左侧 Ordered Group Repositories,save 保存:
DSC00012.png

  5 . 搜索构件
  为了更好的使用 Nexus 的搜索,我们可以设置所有 proxy 仓库的 Download Remote Indexes 为 true,即允许下载远程仓库索引。
DSC00013.png

  索引下载成功之后,在 Browse Index 选项卡下,可以浏览到所有已被索引的构件信息,包括坐标、格式、Maven 依赖的 xml 代码:
DSC00014.png

  有了索引,我们就可以搜索了:
   DSC00015.png
  6 . 配置Maven使用私服
  私服搭建成功,我们就可以配置 Maven 使用私服,以后下载构件、部署构件,都通过私服来管理。
  在 settings.xml 文件中,为所有仓库配置一个镜像仓库,镜像仓库的地址即私服的地址(这儿我们使用私服公共仓库组 Public Repositories 的地址):
DSC00016.png





DSC00017.gif
<mirrors> <mirror> <id>central</id> <mirrorOf>*</mirrorOf> <!-- * 表示让所有仓库使用该镜像--> <name>central-mirror</name> <url>http://localhost:8081/nexus/content/groups/public/</url> </mirror> </mirrors>

  更多高级特性不再介绍(我也还不会)。
  原文地址:http://www.oschina.net/question/698806_159372
  Nexus私服使Maven更加强大
  前边简单介绍了Maven,而Maven默认提供的中央仓库是在远程网络服务Appache提供的,这对于我们开发时不合理的。如果我们没网了或者什么情况,我们怎么办?也就是说我们队中央仓库的依赖性太大。而Nexus私服则可以解决我们这个问题。先看下这张图应该大家就非才明白了:
DSC00018.jpg

  这样就相当于在我们本地的局域网搭建了一个类似中央仓库的服务器,我们开始将中央仓库的一些资料下载到私服务器上,然后平时我们的maven项目就是直接访问局域网内的私服即可,既节省了网络带宽也会加速项目搭建的进程,这样对我们开发来说,对公司来说都是非常好的选择。下边简单看一下Nexus私服的简单使用:

1、Nexus下载

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


2、Nexus启动

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


DSC00019.jpg



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



DSC00020.jpg


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


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



DSC00021.jpg


    3、Nexus仓库

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

              group: 仓库组

              hosted:宿主

             proxy:代理

             virtual:虚拟

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



DSC00022.jpg


    PublicRepositories:  仓库组

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

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

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

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

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

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

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

4、配置nexus


4.1、开启远程索引

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

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



DSC00023.jpg


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



DSC00024.jpg


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



DSC00025.jpg


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



DSC00026.jpg


4.2建立宿主仓库

    新 建公司的内部仓库,步骤为Repositories –> Add –>Hosted Repository,在页面的下半部分输入框中填入Repository ID和Repository Name即可,比如分别填入zfy 和 zfy repostiory,另外把Deployment Policy设置为Allow Redeploy,点击save就创建完成了。

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

DSC00027.jpg



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



4.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 SnapshotsRepositories的组,把Apache Snapshots、Codehaus Snapshots、Snapshots和zfy repostiory加入其中。



DSC00028.jpg

DSC00029.jpg


DSC00030.jpg



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




4.4、创建Nexus代理仓库

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



DSC00031.jpg


5、settings.xml的配置







[html] view plain copy


print?

  • <span style="font-size:18px;">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>   
  • </span>  
  
    6、 maven 项目 的pom.xml配置









[html] view plain copy


print?

  • <span style="font-size:18px;">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"> DSC00032.png DSC00033.png </pre><pre class="html" name="code"> </pre>   
  • 14. <pre></pre>   
  • 15. <pre></pre>   
  • </span>  
  


    嗯,以后部分是来自网络资料,总而言之知道了其中的原理,Nexus只不过是一个工具而已,我们搭建使用实践即可。学习中……

  原文地址:http://blog.csdn.net/liujiahan629629/article/details/39272321

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349424-1-1.html 上篇帖子: HBase编程 API入门系列之scan(客户端而言)(5) 下篇帖子: spring boot 实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表