制品-Maven仓库-Nenux私服

发布于:2022-11-08 ⋅ 阅读:(645) ⋅ 点赞:(0)

12、制品

12.1制品

软件制品是指由源码编译打包生成的二进制文件,不同的开发语言对应着不同格式的二进制文件,这些二进制通常可以直接运行在服务器上。

例如Java JAR,WAR,EAR格式;

Android AAR格式;

其他软件包格式,例如NuGet软件包,Ruby gems,NPM软件包;

Docker镜像和Helm charts;

普通ZIP或.tar.gz、dmg等压缩文件;

可执行文件格式,例如.exe 或.sh 文件;

Android APK、Apple IPA等各种安装程序格式。

12.2制品仓库

制品仓库用以储存和分发源代码编译后的构建产物,可以与源代码协同进行版本化控制;

与本地构建工具和云上的持续集成、持续部署无缝结合;

配合漏洞扫描、依赖分析等特性,是企业用于处理软件开发过程中产生的所有包类型的标准化工作间。

12.3镜像仓库

通过k8s 服务部署应用时,需要从镜像仓库拉取镜像,如:

① Docker,Docker镜像

② Helm,Helm charts

12.4依赖仓库

各种开发语言的依赖包管理仓库,通常会搭建nexus私服来通过代理拉取各个中央仓库的开源依赖包,也叫三方包;

由企业公共组件开发团队或合作公司提供的依赖包或SDK,也叫二方包,常见的有maven和npm包。

13、Maven仓库

 

 

13.1仓库分类

maven 仓库主要涉及到的是三类:远程中央仓库,公司组织的私服仓库,以及我们本地开发依赖的本地仓库。

中央仓库:maven人家管理的,开源的仓库,基本大家用到的jar包都是直接或者间接来自这里的。

私服仓库:就是有的东西不想开源自己拥有版权的东西,弄到自己的私服仓库中去,或者连接去中央仓库由于网络原因,就自己先把需要的都下载下来,很多镜像仓库其实就是这样的,不是人家官方组织维护的。

本地仓库:到这里就是你的地盘了,不管你这个包什么方式,什么仓库下载过来的,你本地项目的启动都是依赖你电脑的本地仓库,找不到才去中央仓库或者你setting设置的镜像或者公司的私服去下载,下载到你本地仓库,你不删除下回用的话就不用再去下载了。

13.2仓库坐标

用来描述仓库资源的位置,坐标主要组成:

groupId 定义Maven项目中的隶属组织名称(org.apache)

artifactIdId 定义项目名称(ZP_DEMO)

version 定义版本号

packaging 打包方式

13.3仓库配置

仓库的配置涉及到的就是setting文件,setting文件和pom文件是Maven工程,setting文件定义了本地库设在哪,你从哪个私服或者镜像网站拉去依赖jar包,定义拉取那个分组。

13.4Nexus仓库管理器(maven\docker\npm)

nexus的全称是Nexus Repository Manager,是Sonatype公司的一个产品。它是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。

我们主要用它来搭建公司内部的maven私服。但是它的功能不仅仅是创建maven私有仓库这么简单,还可以作为nuget、docker、npm、bower、pypi、rubygems、git lfs、yum、go、apt等的私有仓库,功能非常强大。

 

Nexus全称Sonatype Nexus,是一种特殊的远程仓库,它是架在局域网内的仓库服务。

Maven访问远程仓库下载jar包是需要外网支持的,在不提供外网或者网速很慢的情况下,项目构建就会非常困难,所以很有必要在局域网内搭建Nexus私服。

Nexus私服代理广域网上的远程仓库,供局域网内的Maven用户使用。

当Maven需要下载构件的时候,它从Nexus请求,如果Nexus上不存在该构件,则从外部的远程仓库上下载,缓存到nexus上之后再为Maven的下载提供服务。除此之外,我们还可以把一些无法从外部远程仓库下载到的构件上传到私服,实现共享的目的。

在公司内网,大大减轻了从中央仓库获取构件的带宽和不必要的磁盘浪费。

13.5Nexus私服作用

所谓的私服,就是在局域网中的一种特殊的远程仓库,它的作用是代理远程中央仓库和部署第三方构件。

有了私服之后,当Maven需要下载构件的时候,直接请求私服即可,私服上如果存在所需的构件,则直接从私服进行下载到本地仓库;反之,如果私服上不存在所需的构件,私服会请求外部的远程仓库(中央仓库),先将构件下载到私服,然后再提供给本地仓库进行下载。这样,第二个开发人员如果同样需要此构件,就可以直接从私服进行下载到本地仓库了。

13.6Nexus私服优点

节省外网带宽:大量对中央仓库的重复请求会消耗带宽,利用私服代理外部仓库,可以避免重复的公网下载降低带宽的压力。

加速maven的构建:maven通过内网从私服拉取所需构件(私服存在此构件的情况下),获取构件的速度大大加快,从而加快打包构件的速度。

部署第三方构件:开发人员自己封装的一些jar包(工具类),可以部署到私服,以便内部开发人员的maven项目使用。

提高稳定性:当公网网络不稳定的时候,如果使用远程仓库,maven的构建也会变得不稳定。如果在私服存在所需的构件,即使没有公网,maven的构件也会顺利进行。

降低中央仓库的负荷:使用私服,避免了从中央仓库的重复下载,可以减轻中央仓库的负荷。

本文含有隐藏内容,请 开通VIP 后查看