搭建 Nexus 私服
个人博客版传送门
记得最早进行 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 私服相关推荐
- 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. ...
- Linux_Centos中搭建nexus私服
1.在Linux下搭建Nexus私服 1).下载并且解压 下载 nexus-2.11.2-03-bundle.zip unzip nexus-2.11.2-03-bundle.z ...
- (Docker实战) 第5篇:Centos7 拉取和部署搭建 NEXUS私服
文章目录 搭建nexus私服 1. 安装nexus3(admin/admin123) 2 .配置nexus3 2.1 新建一个maven2(proxy)仓库 2.2. 新建一个maven2(hoste ...
- linux搭建nexus私服仓库并简单使用
linux搭建nexus私服仓库并简单使用 1.linux搭建nexus私服仓库 1.1.下载安装包 1.2.linux安装 1.3.修改端口号 1.4.启动和关闭 1.5.登录控制台 1.6.账号与 ...
- Maven搭建Nexus私服
私服的介绍 1 什么是私服 私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程仓库,供局域网使用. 在企业开发中,私服的建设是有必要的,其好处如下: 1.1 节省资金.外网带 ...
- 史上最详细Maven笔记以及搭建Nexus私服
1.配置环境变量 1.1.方式一 M2_HOME 1.2.方式二 1.3. 查看是否配置成功 mvn -version 2.配置maven远程仓库地址 2.1.本地maven加载顺序 查找远程地址:m ...
- 轻松实现在windows平台搭建Nexus私服
1.下载 百度网盘下载(版本nexus-3.31.1) 地址:https://pan.baidu.com/s/1JD3TdtRq-Ye4oMjXIqQUkQ 提取码:1234 官网下载 地址:http ...
- Mavn 搭建 Nexus 私服
目录 一.目的 二.部署 三.FAQ 一.目的 有时候 Java 开发在构建项目的时候,由于存在一些依赖关系会把整体项目都进行构建,这样一来 Jenkins 构建就非常慢,四五分钟才能构建完成.于是可 ...
- 用Docker搭建Nexus私服
搜索Nexus 在docker容器中加载Nexus镜像 发布本地项目到Nexus私服 配置连接方式 发布指令 打源码包上传插件 搜索Nexus 在我们打算使用Nexus时,我们先搜索一下docke ...
- windows搭建nexus私服
前期准备 下载nexus私服压缩包,可以去官网下载 同时也给出一个百度云连接:链接:https://pan.baidu.com/s/1lIIS1Ln0zI7efbrwm3-UIw 提取码:c50u 安 ...
最新文章
- 带参数的方法;导入包
- 【面试】吃透了这些Redis知识点,面试官一定觉得你很NB
- php 获取js变量
- QT的QOperatingSystemVersion类的使用
- Java集合—TreeMap底层原理
- PHP开发erp账号登陆问题,浪潮ERP软件E系列创建账套时提示“由于登陆不正确、请重新登陆” | 浪潮888博客...
- [Svn不提交Classes文件夹下的文件][SVN不交付Classes解决方案]
- 使用bcp进行大数据量导出导入
- 微信小程序获取当前地理位置中文_微信小程序获取位置信息
- C语言栈的push函数,关于栈的有关问题。为什么Push函数top始终是NULL
- 新年快乐@2008!
- 我的知识管理工具列表
- WiFi无线网络的几种认证与加密方式
- 微信小程序 常见问题(报错)
- Hive面试题(一)
- Java技术Jsoup爬取数据手动登录
- Activity的七大生命周期
- 跟益达学Solr5之使用Jetty部署Solr
- Kotlin开发第四天,探究Fragment
- SCAU 数字电路 Digital Circuits and Logic Design 复习
热门文章
- 【仿真设计】仿真技术在智能制造中的作用;智能制造难点在模型,焦点在仿真;汽车行业CAE研究
- 怎么去搭建聚合支付系统比较划算
- 24小时制和12小时制am Matlab,十二钟头制与二十四小时制详解
- 8.14. JSON Types
- win11蓝牙无法使用 Windows11蓝牙无法使用的解决方法
- mysql中db的名词解释_数据库常用名词解释大全
- python绘制像素图_Python用61行代码实现图片像素化的示例代码
- 关于电视盒子/XBOX/手机使用kodi访问局域网下的windows电脑文件/电影
- 公司官网建站笔记(五):域名工信部备案完整流程并解析公网访问
- 官方精简版Windows10:微软自己都看不过去了