简单介绍

前言:我们常用的maven仓库有中央仓库(全球共用),私有仓库(公司内部共用),和本地仓库(个人私有).类似代码托管大概有GitHub(全球代码托管)和gitee(国内版代码托管)和Gitlab(公司私有代码托管),所有一般公司要内部搭建的往往就是内部代码托管(Gitlab)和内部jar包托管(nexus私服),这里演示的主要是nexus私服的搭建,主要目的是学习并可以模拟maven上传自己的jar包到公司开发流程.

中途遇到困难结合百度,这里提供一些解决方案,仅供参考(https://blog.csdn.net/qq_34531925/article/details/80165977)

私服的搭建

安装私服软件nexus

前提本地JDK和maven都是安装好了的

首先安装或者搭建服务器自然需要软件的,那么nexus软件下载地址:    http://www.sonatype.org/nexus/go

版本以nexus 3.28.1-01为例 当然是2020年10月24号最新版

然后填写你的邮件(比如你的QQ邮箱)

下载软件

下载完成后直接解压到你需要的安装的文件夹(比如我的是D:\Asoftware\package\nexus)就行了,并配置环境变量

CMD启动即可  nexus /run

等待启动成功

测试本地访问是否可以正常运行

首次访问  http://localhost:8081/

点击右上角登录(弹框提示用户名是admin 密码在对应的文件夹,按照要求填写即可)

 后续步骤提示可以重置密码(我直接习惯把密码也改成admin,这样方便一点)注意修改了后要记住它哦,原始密码文件会在你修改后自动删除  正常登录后的界面

将nexus配置为系统服务,新开一个CMD窗口 命令  nexus.exe /install nexus  (Could not open SCManager.是因为没有使用管理员CMD窗口)  查看一下Windows任务管理器,确认一下(已停止不用在意,继续下一步)

nexus软件目录介绍

如图所示

安装目录下大致介绍

bin 包含nexus的启动脚本和相关配置
etc jetty、karaf等配置文件
jre jre环境
lib java架包库
public 关于nexus应用在本地跑起来所需要的资源
system 应用所有的插件和组件
LICENSE.txt 和 NOTICE.txt 版权声明和法律细则

数据文档目录大致介绍

blobs/ 创建blob的默认路径,当然也可以重新指定
cache/ 当前缓存的karaf包的信息
db/ OrientDB数据库的数据,用于存储nexus的元数据的数据库
elasticsearch/ 当前配置的Elasticsearch状态
etc/ 大概是运行时配置状态和关于资源库的自定义的相关的东西
health-check/ 看目录,健康检查的相关报告的存储目录吧
keystores/ 自动生成的关于资源库的ID主键
log/ 运行实例生成的日志文件,也有日志文件的压缩包,貌似是每天都会生成日志文件,你可以定期删除老的日志文件
tmp/ 用于存储临时文件的目录

nexus基本配置

修改软件端口号

nexus对maven仓库的配置

创建 Blob Strores(可以不用配置)

在创建 repository之前,还是需要先设定一个指定的文件存储目录,便于统一管理。在创建 repository之前,还是需要先设定一个指定的文件存储目录,便于统一管理。这一步非必须

配置 Proxy Repository代理仓库

创建 Proxy Repository 代理仓库,创建 repository 创建成功后,之后打包的jar文件会在这个指定的路径下.

创建页面出来之后,页面上有三个框是必填的:

下图的一般选Mixed(包含SNAPSHOT版本和RELEASE版本),也可以根据你的需要

创建 hosted repository 宿主仓库

就是私服jar包放在电脑的那个位置(公司的话肯定是云服务器,这里模拟放在本机就行)

Hosted有三种方式:ReleasesSnapshotMixed(和上面类似)

  • Releases: 一般是已经发布的Jar包
  • Snapshot: 未发布的版本
  • Mixed:混合的

这个就是多几个备胎的意思,jar包在私服下载不了,可以直接选择其他镜像,下载jar包,和maven的setting配置镜像一个道理.

这里推荐几个远程仓库

  • jboss的maven中央仓库地址:http://repository.jboss.com/maven2/
  • 阿里云的maven中央仓库地址:http://maven.aliyun.com/nexus/content/groups/public/
  • apache的maven中央仓库地址:http://repo.maven.apache.org/maven2/

创建 group repository 仓库组

类似于把仓库都作为备胎,按照顺序依次使用

大概解释一下 为什么要注意顺序

官方文档中建议:
It is recommended practice to place hosted repositories higher in the list than proxy repositories. For proxy repositories, the repository manager needs to check the remote repository which will incur more overhead than a hosted repository lookup.

希望将hosted repositories【宿主仓库】的顺序放在proxy repositories【代理仓库】之前,因为一个group【仓库组】中可以涵括这些宿主仓库和代理仓库。而一整个的group是作为一个public,一个接口给别人使用的。

所以当查找jar包的时候,如果代理资源库在前面,那就是先从远程去查找jar,而不是先从宿主仓库(本地仓库)去查找是否有jar

测试 让 Maven 项目使用 Nexus 私服

idea设置 Nexus 为镜像地址

maven 下的setting.xml文件和你自己项目中的pom.xml文件的关系:

  • settting.xml 文件就是本地电脑上的全局变量;而pom.xml文件就是局部变量。
  • pom.xml文件对于项目来说,是优先使用的。然而pom.xml文件中如果没有指定jar要从哪里下载的话,也就是说没有配置镜像地址的话,当然只能去按照settting.xml 中定义的地址去找了

http://localhost:9081/repository/myself_group/

配置maven的配置文件setting.xml

<!--自定义maven本地仓库地址(注意斜杆的方向哈)-->
<localRepository>D:/Aworkspace/mavennexus/nexusrepo</localRepository><!--nexus服务器(注意位置servers内)--><server>  <id>nexus</id>  <username>admin</username>  <password>admin</password>  </server> <server>  <id>nexus-releases</id>  <username>admin</username>  <password>admin</password>  </server> <server>  <id>nexus-snapshots</id>  <username>admin</username>  <password>admin</password>  </server> <!--仓库组的url地址  id和name自定义,mirrorOf的值设置为central,写死的-->  <mirrors>     <mirror>  <id>nexus</id>  <name>nexus repository</name>  <url>http://localhost:9081/repository/myself_group/</url>  <mirrorOf>central</mirrorOf>  </mirror>     </mirrors>

idea搭建maven测试

(先随便创建一个maven项目,里面象征性写个实体类user)   查看pom配置的路径url

pom(注意里面配置的内容来源)注意要打包源码需要添加插件,否则下载源码的时候会出现

idea下载nexus私服仓库jar包源码失败.所以这里根据需要,一般还是选择待源码发布,不然人间下载你的jar包失败,读源码不爽

 <distributionManagement><repository><id>nexus-Release</id><name>Nexus Release Repository</name><url>http://localhost:9081/nexus/content/repositories/Release/</url></repository><snapshotRepository><id>nexus-SNAPSHOT</id><name>Nexus Snapshot Repository</name><url>http://localhost:9081/nexus/content/repositories/SNAPSHOT/</url></snapshotRepository></distributionManagement><build><plugins><!--   要将源码放上去,需要加入此配置    --><plugin><artifactId>maven-source-plugin</artifactId><version>2.1</version><configuration><attach>true</attach></configuration><executions><execution><phase>compile</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></build>

私服的增删改查(CRUD)

上传jar到nexus私服-新增

到配置的私服仓库查看一下

在私服控制台上再次确认一下  可以根据 artifactId 搜索 zxx-nexus  (我的测试maven的artifactId )

到这里,基本上完成了所有的私服的搭建配置和maven项目结合,实现了一个完整的私服仓库(拉取私服jar不用展示了,因为没有什么不一样,和之前的maven逻辑一样,只是本地找不到jar包,之前是直接去中央仓库下载,现在只是maven先去私服看一下,没有再去中央仓库,所以这个是maven配置settings文件后自动做的,使用者不用去管哪些了).

nexus私服查看jar详情-查找

idea的maven项目在nexus私服下载jar

只需要在pom.xml添加相应的jar做表即可

测试使用

尝试下载jar源码(注意这个是在打包的时候配置了源码打包才行哈,就是那个pom配置了插件才行,不然无法下载jar包源码以为是私服授权或者其他哪里配置不对,其实不是,当然还是再次提醒setting文件要配置正确哈)

 

nexus私服jar包的删除-删除

上一步进入详情后,点击那个browse SNAPSHOT(s)后,进入

nexus私服jar包的修改

其实就是上传的时候升级版本号即可,并没有所谓的修改jar包,要修改GAV坐标,直接上传就行了,如果之前的坐标有改动,直接删除原坐标,新上传即可,这个只是为了强迫症完成增删改查的完整性

处理上传jar包到私服的细节问题

升级jar包版本,并上传到私服

修改了代码之后,必须新增版本号(哪怕只是添加一段注释,养成习惯),这个不存在jar包冲突的过程.(只有分布式开发的时候用户使用的jar版本不一致会导致jar包类,接口等代码不一致,这个不是maven私服的锅),遇到这种情况,需要大家讨论后选择对应版本的jar包即可

Nexus搭建Maven私服并使用私服相关推荐

  1. 如何使用Nexus搭建Maven私服

    如何使用Nexus搭建Maven私服 转载于:https://www.cnblogs.com/valuestack/p/nexus-and-maven.html

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

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(九)--使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要搭建nexus私服,原因很 ...

  3. 用nexus搭建maven私服(整合网上文章而成的)

    背景:最近项目准备使用maven+nexus来管理构件,也方便项目的构建,所以老大就让俺研究研究怎么用nexus搭建maven私服 环境:win7-64.nexus-2.2.maven-3.0.4.j ...

  4. 使用Nexus搭建Maven私服、私服下载与上传

    目录 一.概念 1.私服简介 2.私服的好处 3.搭建私服的开源仓库管理软件 二.使用Nexus搭建Maven私服(Windows环境) 1.安装jdk 2.下载即安装Nexus 2.1 下载 2.2 ...

  5. 基于Nexus搭建maven私有源仓库

    [原文链接]基于Nexus搭建maven私有源仓库 文章目录 一.默认的仓库说明 1.1 默认仓库的分类 1.2 默认仓库的存放目录 1.3 默认仓库通常情况下的使用 二.配置阿里云maven源代理 ...

  6. linux设置nexus开机自启动_在linux中使用nexus搭建maven私服

    首先介绍下为什么要搭建maven私服,简单点说就是就是把项目工程中的Jar包放在一个服务器上,每次Jar包的修改都能去私服上面Down到本地.可以对整个项目组的人形成一个统一的管理. 2.下载完之后就 ...

  7. Maven学习 使用Nexus搭建Maven私服(转)

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  8. Maven学习-使用Nexus搭建Maven私服

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  9. Linux下使用Nexus搭建Maven私服

    Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问.利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact.Nexus ...

  10. 使用Nexus搭建Maven仓库私服的权限配置心得

    最近在学习Maven,学习到使用Nexus搭建私服,通过Nexus的权限机制可以实现较细粒度的权限控制,这对组织内部的团队开发很有帮助.通过实验,我总结了以下一些经验,可以实现一些权限控制的需求,在此 ...

最新文章

  1. 单点登陆的技术实现机制
  2. 关于笔记本键盘错乱的原因及解决办法
  3. Spring定时器表达式
  4. 阿里云云监控agent插件 - Linux版
  5. 为什么我会在2012年的新企业Java项目中使用Java EE而不是Spring
  6. 08.MyBatis整合Log4j
  7. 扫地机器人水箱背景_水箱尘盒组件及扫地机器人的制作方法
  8. java ip地址类,实现获取主机名称,IP地址的类 (java)
  9. 大数据-实时推荐系统最主流推荐系统itemCF和userCF视频教程下载
  10. NYOJ--31 5个数求最值
  11. Eclipse srever起来时,时间超过45s。
  12. Atitit 视图状态ViewState)的原理与管理
  13. ELK 企业内部日志分析系统
  14. 【扩展KMP】【HDU 4333】Revolving Digits
  15. 2020-12-04mscomm.ocx注册的问题
  16. 骑士cms(74cms)个人版 整合UC
  17. 德州农业机械大学计算机科学,2020年德州农业机械大学申请条件
  18. Python实战案例:tornado接口vue客户端的堂食点餐系统(中)
  19. 4.8 IFFT/FFT
  20. 萌新改代码系列(一)--VINS+GPS

热门文章

  1. 实现统一社会信用代码校验
  2. 我是马云:新入职员工勿批判公司
  3. 信捷PLC中Y0用C语言怎么表示,信捷PLC
  4. Vue3中使用Ant Design Vue图标
  5. 会PLC也能玩转机器视觉(三)- BLOB斑点定位
  6. C++-网络库:Poco概述【开源的C++类库的集合】【提供简单的、快速的网络和可移植应用程序的C++开发】【和C++标准库可以很好的集成并填补C++标准库的功能空缺】【适合嵌入式开发】
  7. 制作卡通(动漫风)效果
  8. 微信小程序云开发教程-小程序端调用云函数
  9. 在计算机英语中 memory的中文意思是,Memory是什么意思,memory什么意思中文
  10. 视频聊天能正常工作吗?