个人博客版传送门

记得最早进行 web 开发的时候,采用 SSM 架构,一些相关的 jar 包需要自行到官网上搜索下载到本地,然后手动将 jar 引入项目中使用。而今对于依赖的管理已经进步了很多,由构建工具(Maven/Gradle)去自动处理,程序员只需要声明需要什么 Jar,去哪里拿。

在企业内部,一般都会搭建一套自己的 Jar 仓库,没错,就是用 Nexus,Nexus 还可以用作 NPM、docker、helm、apt、yum 等的私服,感兴趣可以上官网看看。

这里采用 Nexus 2 搭建私服,Nexus 2:Windows 下载地址、Linux 下载地址。

解压后得到两个文件夹:nexus-2.14.20-02、sonatype-work。


进入 nexus-2.14.20-02/bin/,执行如下命令启动 Nexus

./nexus start

博主环境的默认 jdk 为 openjdk11,启动时报错,提示缺少了 jar,原因是 jdk11 中移除了 javax.xml.bind 的 jar,解决方法是手工引入 jaxb-api-2.3.1.jar、activation-1.1.1.jar 到 nexus-2.14.20-02/lib 下。如果环境中存在合适的 jdk 版本,比如 jdk8,那么也可以在 nexus-2.14.20-02/bin/jsw/conf/wrapper.conf 中指定程序运行时使用的 jdk,如下

set.JAVA_HOME=/opt/jdk1.8.0_40/wrapper.java.command=%JAVA_HOME%/bin/java 

启动后,到浏览器访问 http://<192.168.80.202>:8081/nexus,管理员初始账号为 admin/admin123 。


点击左侧的 Repositories 就可以看到所有的仓库,而我们一般要引用的就是 Public Repository 这个仓库,这个仓库可以将几个仓库中的 jar 整合到一个统一的索引路径下,省去在构建工具中引用多个仓库。


当在构建工具的配置文件中设置好使用这个私服仓库地址后,在向私服请求依赖时如果私服没有,就会去互联网上的中央仓库(或者其他配置了 Proxy 仓库的对应外网仓库)中取,并缓存到本地。还记得压缩包解压得到了两个目录,私服的 jar 就存在 sonatype-work/nexus/storage 下,界面上的每一个仓库对应一个目录。


仓库有几种类型:group(public)、hosted(release、snapshots、3rd party)、proxy(apache snapshots、central)、virtual(central m1)。

group 就是前面说过的,把多个仓库整合成一个;hosted 是定义在私服本地的仓库;proxy 对应到私服外的仓库;virtual 只是一个仓库格式适配器,比如这里把 central 适配为 central-m1。


hosted 仓库一般放企业自己用的不对外的 jar。hosted 仓库有一个很有意思的用法,假设我们创建了一个 cq-hosted 的仓库,该仓库的所有依赖显然存储在 sonatype-work/nexus/storage/cq-hosted/ 下。


现在我们的思维暂时跳跃一下:当用 maven 作为构建工具,构建完毕,依赖会按照 GAV 提供的信息以一定的结构存放在本地(如果没有在 ~/.m2/setting.xml 中设置过 localRepository,就放在 ~/.m2/repository/ 下,这个仓库在 gadle 中通过 mavenLocal() 来引用)。

完全可以直接将 ~/.m2/repository/ 下的内容原封不动地拷贝到 sonatype-work/nexus/storage/cq-hosted/ 下(然后在 cq-hosted 仓库上 update index),就可以将本地仓库发布到 cq-hosted 仓库,他们的依赖路径结构是完全一样的。再将 cq-hosted 仓库加入 public 仓库组,就可以通过 public 仓库使用了。


对于 nexus-3,因为存储采用了 blob,所以是不支持这样直接拷贝的。而使用 gradle 来构建的话,它将获取到本地的依赖视为缓存,其 caches 下的依赖路径结构和 nexus-2 上的截然不同(当然也是存在一定的对应关系,但远不如 maven 方便)。

如果私服不能联网,那如上直接搬本地仓库也是可行的。

# 读取当前路径下的 pom.xml,将依赖 jar 放到 ./target/dependency 下,并保持下载到本地仓库时的目录结构
mvn -U -f ./pom.xml -D mdep.copyPom=true -D mdep.addParentPoms=true -D outputAbsoluteArtifactFilename=true -D mdep.useRepositoryLayout=true dependency:copy-dependencies

官方参考

搭建 Nexus 私服相关推荐

  1. Ubuntu16.04 搭建nexus 私服 学习步骤以及安装maven和git

    1.下载安装maven wget https://www-us.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin. ...

  2. Linux_Centos中搭建nexus私服

    1.在Linux下搭建Nexus私服 1).下载并且解压      下载  nexus-2.11.2-03-bundle.zip      unzip nexus-2.11.2-03-bundle.z ...

  3. (Docker实战) 第5篇:Centos7 拉取和部署搭建 NEXUS私服

    文章目录 搭建nexus私服 1. 安装nexus3(admin/admin123) 2 .配置nexus3 2.1 新建一个maven2(proxy)仓库 2.2. 新建一个maven2(hoste ...

  4. linux搭建nexus私服仓库并简单使用

    linux搭建nexus私服仓库并简单使用 1.linux搭建nexus私服仓库 1.1.下载安装包 1.2.linux安装 1.3.修改端口号 1.4.启动和关闭 1.5.登录控制台 1.6.账号与 ...

  5. Maven搭建Nexus私服

    私服的介绍 1 什么是私服 私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程仓库,供局域网使用. 在企业开发中,私服的建设是有必要的,其好处如下: 1.1 节省资金.外网带 ...

  6. 史上最详细Maven笔记以及搭建Nexus私服

    1.配置环境变量 1.1.方式一 M2_HOME 1.2.方式二 1.3. 查看是否配置成功 mvn -version 2.配置maven远程仓库地址 2.1.本地maven加载顺序 查找远程地址:m ...

  7. 轻松实现在windows平台搭建Nexus私服

    1.下载 百度网盘下载(版本nexus-3.31.1) 地址:https://pan.baidu.com/s/1JD3TdtRq-Ye4oMjXIqQUkQ 提取码:1234 官网下载 地址:http ...

  8. Mavn 搭建 Nexus 私服

    目录 一.目的 二.部署 三.FAQ 一.目的 有时候 Java 开发在构建项目的时候,由于存在一些依赖关系会把整体项目都进行构建,这样一来 Jenkins 构建就非常慢,四五分钟才能构建完成.于是可 ...

  9. 用Docker搭建Nexus私服

    搜索Nexus 在docker容器中加载Nexus镜像 发布本地项目到Nexus私服 配置连接方式 发布指令 打源码包上传插件 搜索Nexus   在我们打算使用Nexus时,我们先搜索一下docke ...

  10. windows搭建nexus私服

    前期准备 下载nexus私服压缩包,可以去官网下载 同时也给出一个百度云连接:链接:https://pan.baidu.com/s/1lIIS1Ln0zI7efbrwm3-UIw 提取码:c50u 安 ...

最新文章

  1. 带参数的方法;导入包
  2. 【面试】吃透了这些Redis知识点,面试官一定觉得你很NB
  3. php 获取js变量
  4. QT的QOperatingSystemVersion类的使用
  5. Java集合—TreeMap底层原理
  6. PHP开发erp账号登陆问题,浪潮ERP软件E系列创建账套时提示“由于登陆不正确、请重新登陆” | 浪潮888博客...
  7. [Svn不提交Classes文件夹下的文件][SVN不交付Classes解决方案]
  8. 使用bcp进行大数据量导出导入
  9. 微信小程序获取当前地理位置中文_微信小程序获取位置信息
  10. C语言栈的push函数,关于栈的有关问题。为什么Push函数top始终是NULL
  11. 新年快乐@2008!
  12. 我的知识管理工具列表
  13. WiFi无线网络的几种认证与加密方式
  14. 微信小程序 常见问题(报错)
  15. Hive面试题(一)
  16. Java技术Jsoup爬取数据手动登录
  17. Activity的七大生命周期
  18. 跟益达学Solr5之使用Jetty部署Solr
  19. Kotlin开发第四天,探究Fragment
  20. SCAU 数字电路 Digital Circuits and Logic Design 复习

热门文章

  1. 【仿真设计】仿真技术在智能制造中的作用;智能制造难点在模型,焦点在仿真;汽车行业CAE研究
  2. 怎么去搭建聚合支付系统比较划算
  3. 24小时制和12小时制am Matlab,十二钟头制与二十四小时制详解
  4. 8.14. JSON Types
  5. win11蓝牙无法使用 Windows11蓝牙无法使用的解决方法
  6. mysql中db的名词解释_数据库常用名词解释大全
  7. python绘制像素图_Python用61行代码实现图片像素化的示例代码
  8. 关于电视盒子/XBOX/手机使用kodi访问局域网下的windows电脑文件/电影
  9. 公司官网建站笔记(五):域名工信部备案完整流程并解析公网访问
  10. 官方精简版Windows10:微软自己都看不过去了