目录

一、概述

1、Nexus介绍

2、Nexus安装

3、Nexus功能

3.1、Browse

3.2、Administrator

3.3、更多功能查看文档

4、Nexus配置Maven私服

5、添加国内的仓库镜像


一、概述

我们通常使用Maven或Gradle作为项目的管理和构建工具,它们的一个主要功能就是提供了一套依赖管理机制。

我们所需要的所有构件都会通过Maven的中央仓库下载到本地。

由于中央仓库在国内访问较慢,为了提高访问速度,我们通常使用国内的第三方Maven仓库。

但是,毕竟第三方仓库的访问也需要网络,团队中所有人都重复的从Maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,很多情况下项目的开发都是在内网进行的,可能都不允许访问外网,根本连接不了Maven的中央仓库和第三方的Maven仓库。

就这样,我们就需要搭建一套自己的私有仓库,也叫私服。

1、Nexus介绍

Nexus是Maven仓库管理器,也可以叫Maven的私服。Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个构件。Nexus是一套"开箱即用"的系统,不需要数据库,它使用文件系统加Lucene来组织数据。

Nexus Repository是以Java和JavaScript为主,实现的一个包含前端与后台的Web服务。后台方面,它采用Jetty作为应用服务器、Karaf作为OSGi容器、OrientDB作为数据库。前端方面,它使用Swagger UI作为框架,是一个单页面Web App。

另外,它也通过Resteasy支持REST API,可以通过网络进行访问控制。并且,自行实现了一个插件系统,用插件的方式支持了更多复杂的功能。比如Maven、PyPI、Docker这些支持,都是由插件实现的。如果希望支持其他方式的代理、缓存、发布,比如 APT,也可以通过插件定制。

2、Nexus安装

Nexus官网   Products--->REPOSITORY MANAGEMENT  Nexus Repository

Nexus目前官网上(Download)已经很难下载了.

win64

nexus-3.31.1-01-win64

链接:https://pan.baidu.com/s/1iRA9jQ0hr4MMiQd04514RQ

提取码:ka7s

1、Nexus Win安装,解压即可。

2、配置环境变量:path

添加bin目录到path环境变量:D:\.m2\nexus-3.31.1-01-win64\nexus-3.31.1-01\bin

3、端口配置

配置文件:nexus-3.31.1-01\etc\nexus-default.properties

application-port=8081

4、启动

打开cmd,输入nexus /run

启动完成大约5分钟。出现如下内容代表启动成功。

C:\Users\Administrator>nexus /run
2022-09-25 19:40:52,001+0800 INFO  [FelixStartLevel] *SYSTEM org.sonatype.nexus.pax.logging.NexusLogActivator - start
2022-09-25 19:40:52,461+0800 INFO  [FelixStartLevel] *SYSTEM org.sonatype.nexus.features.internal.FeaturesWrapper - Fast FeaturesService starting
.............................................
2022-09-25 19:44:29,309+0800 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.Server - Started @220430ms
2022-09-25 19:44:29,312+0800 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer -
-------------------------------------------------Started Sonatype Nexus OSS 3.31.1-01-------------------------------------------------

5、访问

http://localhost:8081/

启动成功后台会报超时错误,画面成功。

org.apache.http.conn.ConnectTimeoutException: Connect to sonatype-download.global.ssl.fastly.net:443 [sonatype-download.global.ssl.fastly.net/199.59.148.89] failed: connect timed outat org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)

 6、登录

点击画面上右侧Sign in

用户名:admin

密码存放于路径下的配置文件admin.password中

输入完,进行修改密码

同意,同意,下一步。完成。

7、后台超时错误消除outreach

2022-09-25 19:47:05,312+0800 WARN  [qtp752051546-103] *UNKNOWN com.sonatype.nexus.plugins.outreach.internal.outreach.SonatypeOutreach - Could not download page bundle
org.apache.http.conn.ConnectTimeoutException: Connect to sonatype-download.global.ssl.fastly.net:443 [sonatype-download.global.ssl.fastly.net/199.59.148.89] failed: connect timed outat org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)

按照下图找到outreach点击进入,只有登录后才能有配置按钮。

进入Settings

取消Enable this capability勾选。点击Save保存。弹出不能为null,继续点击Disable,确定。

此时outreach变为灰色

重启Nexus,重新登录没有超时报错信息了。

8、把Nexus注册进服务

需要以管理员身份打开cmd,输入nexus /install

在服务中开机即启动。

3、Nexus功能

3.1、Browse

Welcome:欢迎界面。

Search:搜索界面,可以根据自己的需求搜索想要的构件是否存在。

Browse:浏览界面,列表展示配置的所有仓库,在点击某一仓库记录的时候,可以浏览该仓库中拥有的构件。

Upload:上传界面,主要是用来将自己的jar包上传到私服上的Maven仓库,也可以将nuget构件上传到私服上的nuget库。

3.2、Administrator

Repository:提供仓库管理功能

Repositories:提供仓库的配置功能,支持创建以下三种类型的仓库

hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的库。

proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。

group:仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

Blob Stores:提供仓库中构件的存储,简单来说就是仓库中的所有的构件就存放在这里,支持几种类型的存储。

File:将构件存储在文件目录中,这是默认的方式。

默认的存储路径:An absolute path or a path relative to /blobs

S3:将构件保存为AWS S3桶中的对象,这需要Nexus托管在AWS上。

Azure:将构件保存为Microsoft Azure存储账户容器中的对象。

Cleanup Policies:提供仓库中构件的清理策略,配置清理策略并应用于仓库,那么仓库中的构件将会定期基于该清理策略进行清理。支持按时间顺序、使用频率等方式清理。

Security:提供权限管理功能。

Privileges:提供Nexus的权限管理功能,是比较细粒度的权限定义。

Roles:提供Nexus的角色管理功能,角色可以理解为一组权限的集合。

Nexus内置了两种角色。

nx-admin:管理员角色,拥有系统的所有权限。

nx-anonymous:游客角色,仅拥有读取和搜索的权限。

Users:提供Nexus的用户管理功能,如果某些仓库仅想对某些人员开放,而不是对所有人开放,可以通过设置凭据访问来限制用户访问仓库,最简单的一种就是用户名密码凭据访问。

Nexus内置了两个用户。

admin:管理员用户,默认分配了nx-admin角色。

anonymous:游客,默认分配了nx-anonymous角色。

3.3、更多功能查看文档

Nexus官方文档

4、Nexus配置Maven私服

Maven的默认本地仓库在:$(user.home)/.m2/repository,我们下载的jar包都会存放在这里。

比如执行:

mvn dependency:get -Dartifact=redis.clients:jedis:3.6.1

========================================

Maven环境变量配置

1.配置环境变量  maven_home    值:D:\apache-maven-3.5.4。
2.在path变量的最后面加上       ;%maven_home%\bin     %号前面的;号不能扔掉。
3.在cmd中输入mvn -version ,如果出现版本信息则正确安装了。  重启机器之后再试一次。
4.环境变量设置完cmd 执行 mvn -version 最后提示cmd不是内部命令,

        解决方式:在设置环境变量path的时候,可能覆盖了原先设置着的变量,只要在path后面将原来的;%maven_home%\bin变为 ;%SystemRoot%\system32;%maven_home%\bin 即可

========================================

cmd执行上面命令,会创建仓库到$(user.home)/.m2/repository中

C:\Users\Administrator>mvn dependency:get -Dartifact=redis.clients:jedis:3.6.1
[INFO] Scanning for projects...
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-plugin:2.5: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.pom
Downloaded from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.pom (6.4 kB at 7.7 kB/s)
....

我们可以通过settings.xml文件对Maven进行配置,官方给定settings.xml格式Maven官方settings.xml设置

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository/><interactiveMode/><offline/><pluginGroups/><servers/><mirrors/><proxies/><profiles/><activeProfiles/></settings>

settings.xml文件读取放到${user.home}/.m2/settings.xml位置。

自己新建settings.xml放到${user.home}/.m2/settings.xml位置。配置settings.xml文件通过localRepository设置本地仓库的路径

<settings><localRepository>D:\repo</localRepository>
</settings>

再来执行mvn dependency:get -Dartifact=redis.clients:jedis:3.6.1命令,把仓库创建到D:\repo路径下。

C:\Users\Administrator>mvn dependency:get -Dartifact=redis.clients:jedis:3.6.1
[INFO] Scanning for projects...
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
..........
Downloaded from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-core/2.13.3/log4j-core-2.13.3.jar (1.7 MB at 305 kB/s)
Downloaded from alimaven: http://maven.aliyun.com/nexus/content/groups/public/net/bytebuddy/byte-buddy/1.10.19/byte-buddy-1.10.19.jar (3.5 MB at 775 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:24 min
[INFO] Finished at: 2022-09-28T22:37:00+08:00
[INFO] ------------------------------------------------------------------------C:\Users\Administrator>

Nexus配置Maven私服

通过profiles可以自定义配置信息,比如可以自定义远程仓库,默认用的是Maven中央仓库,我们可以自定义国内的仓库,或者自己的私服。

<settings><localRepository>D:\repo</localRepository><profiles><profile><id>nexus</id><repositories><repository><id>nexus</id><name>Nexus</name><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy><checksumPolicy>warn</checksumPolicy></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>nexus</id><name>Nexus</name><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy><checksumPolicy>warn</checksumPolicy></snapshots></pluginRepository></pluginRepositories></profile></profiles><activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>
</settings>

解释:

repositories:仓库

pluginRepositories:插件仓库

activeProfiles:用来激活自定义的配置

这样,我们就在Maven项目中用上了自己的私服。

测试:

        先把本地D:\repo路径下的仓库删掉,再执行mvn dependency:get -Dartifact=redis.clients:jedis:3.6.1命令。

C:\Users\Administrator>mvn dependency:get -Dartifact=redis.clients:jedis:3.6.1
[INFO] Scanning for projects...
Downloading from nexus: http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
Downloaded from nexus: http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom (3.9 kB at 1.5 kB/s)
Downloading from nexus: http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom
......
Downloading from nexus: http://localhost:8081/repository/maven-public/org/objenesis/objenesis/3.1/objenesis-3.1.jar
Downloaded from nexus: http://localhost:8081/repository/maven-public/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar (292 kB at 86 kB/s)
Downloaded from nexus: http://localhost:8081/repository/maven-public/org/objenesis/objenesis/3.1/objenesis-3.1.jar (60 kB at 141 kB/s)
Downloaded from nexus: http://localhost:8081/repository/maven-public/org/apache/logging/log4j/log4j-core/2.13.3/log4j-core-2.13.3.jar (1.7 MB at 320 kB/s)
Downloaded from nexus: http://localhost:8081/repository/maven-public/junit/junit/4.13.1/junit-4.13.1.jar (383 kB at 44 kB/s)
Downloaded from nexus: http://localhost:8081/repository/maven-public/net/bytebuddy/byte-buddy/1.10.19/byte-buddy-1.10.19.jar (3.5 MB at 23 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:54 min
[INFO] Finished at: 2022-09-28T23:01:48+08:00
[INFO] ------------------------------------------------------------------------C:\Users\Administrator>

在Nexus网址

点击maven-public,可以看到下载到本地私服的依赖。

先在私服中查找构件,如果私服中没有,就会从远程仓库中进行下载,先下载到私服,再从私服下载到本地仓库。

5、添加国内的仓库镜像

这里以添加阿里云Maven镜像为例,阿里云Maven仓库配置指南

打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ),在<mirrors></mirrors>标签中添加 mirror 子节点:

<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>

由于我们自己搭建了私服。我们就不修改settings.xml 配置文件,而是在私服中进行配置。

1、Repository--> Repositories-->Create  repository

2、选择maven2代理库 

3、 完善名称和阿里云仓库下载地址,划到最后点击创建

4、创建完成可以看到刚创建成功的maven-aliyun,点击maven-public组,把maven-aliyun添加进组中,并把maven-aliyun顺序调到中央仓库前

 

5、配置完成,验证一下

mvn dependency:get -Dartifact=org.apache.dubbo:dubbo:3.0.1
C:\Users\Administrator>mvn dependency:get -Dartifact=org.apache.dubbo:dubbo:3.0.1
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:get (default-cli) @ standalone-pom ---
[INFO] Resolving org.apache.dubbo:dubbo:jar:3.0.1 with transitive dependencies
Downloading from nexus: http://localhost:8081/repository/maven-public/org/apache/dubbo/dubbo/3.0.1/dubbo-3.0.1.pom
Downloaded from nexus: http://localhost:8081/repository/maven-public/org/apache/dubbo/dubbo/3.0.1/dubbo-3.0.1.pom (35 kB at 55 kB/s)
Downloading from nexus: http://localhost:8081/repository/maven-public/org/apache/dubbo/dubbo-parent/3.0.1/dubbo-parent-3.0.1.pom
Downloaded from nexus: http://localhost:8081/repository/maven-public/org/apache/dubbo/dubbo-parent/3.0.1/dubbo-parent-3.0.1.pom (28 kB at 69 kB/s)
........
Downloaded from nexus: http://localhost:8081/repository/maven-public/net/bytebuddy/byte-buddy-agent/1.10.20/byte-buddy-agent-1.10.20.jar (259 kB at 565 kB/s)
Downloaded from nexus: http://localhost:8081/repository/maven-public/io/netty/netty-all/4.1.56.Final/netty-all-4.1.56.Final.jar (4.3 MB at 751 kB/s)
Downloaded from nexus: http://localhost:8081/repository/maven-public/net/bytebuddy/byte-buddy/1.10.20/byte-buddy-1.10.20.jar (3.5 MB at 1.5 MB/s)
Downloaded from nexus: http://localhost:8081/repository/maven-public/org/eclipse/collections/eclipse-collections/10.4.0/eclipse-collections-10.4.0.jar (10 MB at 1.4 MB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 24.282 s
[INFO] Finished at: 2022-09-28T23:35:37+08:00
[INFO] ------------------------------------------------------------------------C:\Users\Administrator>

在Nexus网址

点击maven-aliyun,可以看到下载到本地私服的依赖。验证成功。

天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。

Maven私服创建--Nexus相关推荐

  1. 【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件

    文章目录 Nexus是什么 Nexus下载和安装 1. 进入 Nexus 2.x 下载页面,根据本机操作系统,选择对应的版本进行下载,如下图所示. 2. 将下载 Nexus 安装包解压到本地磁盘,可获 ...

  2. Maven私服(Nexus)搭建总结

    因为工作需要,第一次搭建Maven私服,使用的是目前最流行的Sonatype Nexus.搭建私服并不难,官网有很详细的说明,只需几个步骤即可搭建一个可用的私服,但因为公司系统环境(测试)的原因还是遇 ...

  3. maven私服搭建nexus

    maven私服 正式开发,不同的项目组开发不同的工程.dao工程开发完毕,发布到私服.service从私服下载dao. 公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的 ...

  4. 上传本地项目到maven私服(nexus)踩坑记录

    首先,不会搭建maven私服的点这里,涉及到的配置和此文有关 我这里是学习写的文章,私服再本地,所以私服地址都是localhost,这里应该是你的私服服务器的IP地址,复制代码注意要修改才能用 第一步 ...

  5. Maven私服搭建(Nexus Repository Manager 3)

    下载和安装 下载地址:https://help.sonatype.com/repomanager3/download 注意:Nexus Repository Manager 3是一个Java服务器应用 ...

  6. 【Linux环境搭建】六、Linux(CentOS7)Maven私服搭建Nexus

    1.下载nexus http://www.sonatype.org/nexus/go/ 2.解压 tar -zvxf nexus-2.11.4-01-bundle.tar.gz 3.加入系统变量 vi ...

  7. maven私服的创建和使用

    时至今日,慢慢的理解了一些maven私服创建的心得,觉得有必要记录下来,所以就着手行动了. 一.创建maven私服能够实现什么?这个问题困扰了很久,到目前为止所理解的有两种功能了: 第一能够实现带理m ...

  8. 从maven私服(nexus)拉取jar文件,解析项目pom依赖信息

    一.前言 关于pom解析的方式,常见的我认为有两种: 一种是利用dom tree的结构特性,利用dom4j提供的xml解析工具将pom文件读取为dom tree结构,再层层解析出内容. 第二种方式更为 ...

  9. 使用nexus搭建maven私服(一)安装启动

    文章目录 maven私服搭建 nexus简介 nexus下载 nexus的安装&启动 小小修改一下配置文件并启动 安装并启动的两种方式 方式一: 解压cmd启动 方式二: 安装启动建议3.x使 ...

最新文章

  1. ncvlog帮助文档存放路径_Cadence ncvlog error
  2. Xcode代码块的创建、使用和删除
  3. idea社区版和企业版区别_IntelliJ IDEA 旗舰版与社区版有什么不同
  4. 《软件工程》实验报告——软件设计
  5. VTK:可视化之DepthSortPolyData
  6. r型聚类分析怎么做_营销型网站怎么做?
  7. 第6次cplus实验
  8. 关闭(杀死)8080端口
  9. Linux C 预处理详解
  10. .net mvc actionresult 返回字符串_Spring 框架基础(06):Mvc架构模式简介,执行流程详解
  11. 海底捞发布公告 预计去年最高亏损45亿
  12. Vue el-input实现动态显示type为textarea的文字数量、剩余字数
  13. Angular 启动项目时 port 4200 is already in use 解决方法
  14. c语言运算符 ,C语言关于位和运算符
  15. 牛b硬件信息修改大师_比X大师更靠谱?一款真正良心的硬件检测工具
  16. 精挑细选几个JavaScript库和工具
  17. 工作日志模板_生产运行部操作日志“电子化”
  18. 查看dll库导出库的函数接口
  19. 罗技驱动只能安装在c盘么?
  20. 北京内推 | 微软亚洲研究院机器学习组招聘NLP/语音合成等方向全职研究员

热门文章

  1. 利用MQL进行MQL解析
  2. Linux实战教学笔记35:企业级监控Nagios实践(下)
  3. (贪心)过桥问题(c++)
  4. 基于动力学模型的无人驾驶车辆MPC轨迹跟踪算法及carsim+matlab联合仿真学习笔记
  5. 检查 GPU 渲染速度和过度绘制
  6. Java 常用图片处理合集
  7. 三个等号和两个等号的区别(“===”和“==”)
  8. 比较叶绿体基因组提供海草适应性进化新见解
  9. 51Nod_1925 进制转换【进制+枚举】
  10. 熄灯一小时就是环保?能用体温发电的薄膜了解一下?