#业务场景

最近项目要交付给客户了,之前项目开发和测试一直都是使用公司内部的一套环境,项目交付后客户购置了大量服务器,也要将整套测试环境迁移至客户的服务器上,后续的需求变更以及新需求的开发都会在客户服务器上进行开发和测试。当应用服务器环境、SVN等全部准备好之后,我发现项目引用了大量我们公司封装的jar包,而这些jar包还是要从我们公司的Maven私服仓库下载,而客户这边则要求要在客户服务器上重新搭建一个Maven的私服仓库来管理jar包,不允许在使用我们公司的maven私服,所以我就开始协助客户使用Nexus这个仓库管理器来搭建Maven私服。下面就简单说一下在使用Nexus搭建Maven私服时碰到一些问题。

#搭建步骤

不多说了,网上大把教程,各个选项各个参数都有较为详细的介绍,这里推荐两个:

#搭建中的一些小问题

Nexus 2.x版本和3.x版本差别很大,网上搜到的教程大多都是2.x版本的,3.x的较少,由于之前没有搭建仓库的相关经验,这3.x版本上折腾了一番硬是没成功,根据工程学理论,所以我们选择了2.x版本在windows server上进行搭建。

理解maven各个仓库之间的关系

在项目中我们真正会用到的有三个maven仓库,本地仓库、私服仓库和中央仓库。

  • 本地仓库:即本地的maven仓库,也就是在安装maven的时候指定的本地仓库路径,配置在maven的settings.xml当中
  • 私服仓库:使用Nexus搭建好私服后配置的仓库,首先需要在搭建Nexus时进行配置在服务上的仓库地址,通常是在sonatype-work\nexus\storage下,也可以自定义路径覆盖默认路径。反映在本地的settings.xml当中则是配置的标签内 和当中。
  • 中央仓库,在项目中如果未使用Maven私服且都是用到的一些公用的jar包,那么本地工程Maven的默认配置都是从中央仓库进行下载。如果有用到私服,那么请求就是先从私服下载,如果私服仓库没有则去中央仓库进行检索下载。

三者之间的关系是,当我们在项目中依赖一个jar包时,Maven程序会先去本地仓库中找,如果没找到就回去私服找,如果还是没有,最后就回去中央仓库找。如下图:

第三方jar包批量上传

这是碰到的一个头疼的问题,因为当时项目依赖了大量的我们公司自己封装的jar包,这些jar包在中央仓库里肯定是没有的,需要上传到maven私服当中。但是网上搜到的上传方法大都是一个个的上传到thirdparty这个仓库当中,如果照这种方式来不知要上传多久,我看更是有人祭出了自己写的脚本来做批量的上传,这就涉及到了Maven仓库的迁移。后面在网上找到一种相对简单的方法,即将原来用的依赖上传到Nexus所在服务器,然后在新建仓库时制定仓库路径来覆盖默认路径。具体操作如下:

  1. 新建host类型的仓库
  2. 在 Override Local Storage Location选项上填入你上传的maven仓库的路径并覆盖默认路径。

  1. 最好把 Deployment Policy 选项下勾选为 Allow Redeploy 方便后面jar修改后打包到私服仓库。

这样下来就可以了,我这边顺便把上传的jar包夜丢到了thirdparty的默认仓库下了。

本地maven仓库配置好之后部分jar包无法下载

配置完毕之后改了一下maven的settings.xml配置文件,在里面新增了两个profile,一个是私服地址,一个是中央仓库地址。但是测试了几次,总是有几个包无法下载,其中就包括oralce的ojdbc驱动。我们都知道,oracle官方没有把这个驱动jar包放到maven的中央仓库,所以几个用的比较广泛的中央仓库都是找不到这个jar的,但是这个jar包明明在我私服仓库里面是有的,问题可能就是在下载jar包的过程中请求中央仓库下载这些jar包没有成功。但是公司自己封装的jar包也都下载成功了。万分不解,后来中央仓库的地址配置似乎有问题,之前我是配置的默认的http://repo1.maven.org/maven2/ ,后面修改成了Nexus一个默认的group类型的Public Repositories仓库,即http://197.55.xx.xxx:8081/nexus/content/groups/public/jar, 包就能全部下载成功了,:’(

#总结

暂时到这里,里面还有一些我也没搞明白的地方,有机会再补充吧

使用Nexus搭建Maven私服问题总结的更多相关文章

  1. Maven-004-使用 Nexus 搭建 maven 私服

    从去年至今,自己一直在学习自动化测试工具,想利用自动化工具尽可能的将重复的.关键的.耗时耗力的工作实现自动化,减轻日常测试工作,提升测试效率.在学习的过程中,将 maven 作为了项目开发管理工具,进 ...

  2. Maven使用笔记(五)Sonatype Nexus 搭建Maven 私服

    1. 为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地, 而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载 ...

  3. Maven——使用Nexus搭建Maven私服

    原文:http://www.cnblogs.com/xdp-gacl/p/4068967.html Maven学习总结(九)--使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要 ...

  4. (转)Maven学习总结(九)——使用Nexus搭建Maven私服

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(九)——使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目 ...

  5. Maven学习二:使用Nexus搭建Maven私服及相关配置

    处于安全等原因的考虑,一些企业内部网络是不允许访问外部网络的,但是项目内部搭建的项目又是Maven架构,这样就需要企业在内部网络中搭建自己的Maven仓库服务,再者一些大型企业或者内部模块化组件化划分 ...

  6. nexus搭建maven私服及私服jar包上传和下载

    nexus搭建maven私服及私服jar包上传和下载 标签: nexus管理maven库snapshot 2017-06-28 13:02 844人阅读 评论(0) 收藏 举报 分类: Maven(1 ...

  7. nexus 搭建 maven 私服

    nexus 搭建 maven 私服 本机环境 Win 8 JDK 7 Maven 3.2 Nexus 2.11 版本选择 http://www.sonatype.org/nexus/archivedn ...

  8. ubuntu下使用Nexus搭建Maven私服

    ubuntu下使用Nexus搭建Maven私服 1.私服简介: 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服, ...

  9. 使用Sonatype Nexus搭建Maven私服后,如何添加第三方JAR包

    使用Sonatype Nexus搭建Maven私服后如何添加第三方JAR包 步骤如下 1.打开nexus地址,进行登录 2.登录Nexus后,点击右侧的“Repositories”,显示当前Nexus ...

随机推荐

  1. 【bootstrap】面包屑导航(Breadcrumbs)

    .breadcrumb > li + li:before { color: #CCCCCC; content: "/ "; padding: 0 5px; } <ol ...

  2. Tomcat处理请求流程

    Connector组件的Acceptor监听客户端套接字连接并接收Socket. 将连接交给线程池Executor处理,开始执行请求响应任务. Processor组件读取消息报文,解析请求行.请求体. ...

  3. 程序员职业规划(一篇来自"阿里Java工程师"对工作3年左右程序员的职业建议和应该掌握的职业技能)

    程序员的三个阶段(转载) 第一阶段:三年 我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人. 这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的 ...

  4. PyDev For Eclipse

    eclipse安装Pydev 1.根据自己的eclipse和你安装的python选择可以安装的版本 Update sites for various PyDev versions: Latest ve ...

  5. F-stack及其Nginx、redis的编译安装

    F-stack简介 F-stack粘合了dpdk.用户态协议栈和nginx.redis,弥补了dpdk没有协议栈的不足,并用nginx.redis提供了一个调用应用程序的接口. Quick Start ...

  6. nRF5 SDK for Mesh(四) 源码编译

    官方文档教程编译源码: http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk%2Fdita%2Fs ...

  7. 在Eclipse中执行、配置Hadoop

    版权全部: zhe-jiang.he@hp.com  严禁转载! 1.安装插件 准备程序: eclipse-3.3.2(这个版本号的插件仅仅能用这个版本号的eclipse) hadoop-0.20.2 ...

  8. MySQL导出表结构方法

    方法一: 以下用的是Navicat Premium,可以换成任意图形化客户端 SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHAR ...

  9. 使用vue封装一个tab栏切换的左侧导航栏的公共组件

     首先看最终效果图: 1.compent文件夹里添加tab文件夹,里面创建index.vue index.js index.css index.vue内的template部份代码如下:(最新更正:代码 ...

  10. 19-3-15Python中闭包,迭代器,递归

    函数名的使用 函数名可以当作值赋值给变量 函数名可以当作元素放到容器里 闭包 一个嵌套函数 在嵌套函数内的函数使用外部(非全局的变量) 满足以上两条就是闭包 python中闭包,会进行内存驻留,普通函 ...