首页 > 其他分享 >第二部分:关键技术领域的开源实践【企业Maven私服】

第二部分:关键技术领域的开源实践【企业Maven私服】

时间:2024-07-14 22:30:19浏览次数:8  
标签:maven 索引 仓库 私服 Maven Nexus 开源

企业Maven私服主要解决了以下几个关键的痛点需求:

  1. 网络访问限制: 许多企业出于安全考虑,限制了对外部网络的访问,尤其是对公网上的远程仓库如Maven中央仓库的直接访问。Maven私服作为内部的仓库,可以替代对中央仓库的依赖,使得即使在没有互联网连接的情况下,开发人员也可以获取到所需的依赖库。
  2. 带宽和性能优化: 直接从中央仓库下载依赖可能会占用大量的带宽,并且受到网络延迟的影响。通过使用Maven私服,企业可以缓存常用依赖,从而显著减少下载时间和网络负载,提高构建速度和整体开发效率。
  3. 版本控制和管理: Maven私服允许企业集中管理所有项目依赖的版本,确保所有团队成员使用的是相同的依赖版本,避免因版本不一致导致的问题。同时,企业可以控制特定版本的生命周期,比如标记某些版本为“已验证”,只允许使用这些经过测试的稳定版本。
  4. 内部组件共享: 企业内部开发的组件和库可以通过私服进行共享,无需每次都上传到公共仓库。这样不仅可以保护企业的知识产权,还可以简化内部项目之间的依赖关系管理,促进代码重用。
  5. 合规性和安全性: 使用私服可以更好地控制软件供应链的安全性,确保所有依赖都符合企业的安全政策和合规标准。企业可以对上传的组件进行审查,避免引入恶意代码或不受信任的第三方库。
  6. 搜索和元数据管理: 私服通常提供了比中央仓库更强大的搜索功能和元数据管理能力,使得查找特定的依赖变得更加容易。这对于拥有大量内部组件的大规模组织尤其重要。
  7. 构建自动化和集成: Maven私服可以与持续集成/持续部署(CI/CD)系统紧密集成,自动化构建流程中的依赖下载,确保每次构建使用的是最新的、经过验证的组件。

总的来说,Maven私服是企业级开发环境中不可或缺的一部分,它帮助企业实现了依赖管理的标准化、高效化和安全化。常见的Maven私服解决方案包括Sonatype Nexus、Artifactory等。本文开源实践【企业Maven私服】选用Sonatype Nexus

Nexus安装

通过1panel在线安装即可
如果未使用1panel可以参照:第二部分 关键技术领域的开源实践【Linux服务器自动化运维】

image.png

Nexus配置

Nexus内置的仓库

仓库有四种类型:group(仓库组)、hosted(宿主)、proxy(代理)和virtual(虚拟):
image.png
这个列表已经包含了所有类型的Nexus仓库:

仓库类型 说明
proxy 某个远程仓库的代理
group 存放:通过 Nexus 获取的第三方 jar 包
hosted 存放:本团队其他开发人员部署到 Nexus 的 jar 包

每个仓库的格式为maven2或者maven1。此外,仓库还有一个属性为Policy(策略),表示该仓库为发布(Release)版本仓库还是快照(Snapshot)版本仓库。最后两列的值为仓库的状态和路径。

下面解释一下各个仓库的用途:

仓库名称 说明
maven-central Nexus 对 Maven 中央仓库的代理,其策略为Release,因此只会下载和缓存中央仓库中的发布版本构件。
maven-public Nexus 默认创建,供开发人员下载使用的组仓库
maven-releasse Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库,要求 releasse 版本
maven-snapshots Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库,要求 snapshots 版本
其中 maven-public 相当于仓库总和,默认把其他 3 个仓库加进来一起对外提供服务了,另外,如果有自己建的仓库,也要加进该仓库才有用。

创建仓库
除了自带的仓库,有时候我们需要单独创建自己的仓库,按照默认创建的仓库类型来创建我们自己的仓库。
点击Create Repository:
image.png

创建Nexus宿主仓库

创建布道师budao
image.png

创建Nexus代理仓库

输入仓库名以及被代理仓库的URL,这里我输入阿里云的仓库地址,默认为中央仓库。
image.png

创建Nexus仓库组

自定义一个聚合maven组仓库:将其聚合成一个虚拟的仓库组。注意,仓库组所包含的仓库的顺序决定了仓库组遍历其所含仓库的次序,因此最好将常用的仓库放在前面,当用户从仓库组下载构件的时候,就能够尽快地访问到包含构件的仓库。
image.png

Nexus的索引与构件搜索

为了能够搜索Maven中央库,首先需要设置Nexus中的Maven Central代理仓库下载远程索引,如下图所示。需要注意的是,默认这个配置的值是关闭的。此外,由于中央库的内容比较多,因此其索引文件比较大,Nexus下载该文件也需要比较长的时间,耐心等待。
我们知道 Nexus 可以远程下载和缓存中央仓库索引,但是对于国内用户来说,Nexus 远程更新索引使用的站点位于国外且部分索引文件较大,经常会出现下载速度缓慢或索引文件不完整等情况。下面我们将介绍一种更加快捷可靠的索引更新方式:离线更新中央仓库索引。
离线更新中央仓库索引,顾名思义,就是直接将索引文件下载,然后拷贝至 Nexus 工作目录中,以达到离线更新索引的目的。
离线更新中央仓库索引主要分为以下 3 步:

  1. 文件下载
  2. 解压
  3. 更新并验证索引

文件下载

首先,我们需要下载以下 3 个文件:

  • nexus-maven-repository-index.gz
  • nexus-maven-repository-index.properties
  • indexer-cli-5.1.1.jar

1、下载索引文件:

https://repo1.maven.org/maven2/.index/

或者

http://repo.maven.apache.org/maven2/.index/

2、下载索引生成器浏览器访问 http://mvnrepository.com/,搜索 Indexer CLI,选择 Maven :: Indexer CLI

把下载的文件放在同一目录/mnt
image.png

java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer

等待几分钟,先关闭nexus服务,注意1Panel索引目录。搜索:sonatype-work

类似:/var/lib/docker/overlay2/f3ee56a2733f068683bfc11fabac54382d48d15c89c2f548454c6e3b8fd5d855/merged/opt/sonatype/sonatype-work

新建目录:nexus\indexer\central-ctx

更新并验证索引 将所有索引文件(不包含目录)全部拷贝到“….\sonatype-work\nexus\indexer\central-ctx”目录中
image.png

重启 Nexus

项目中使用自己的私服

修改maven 的settings.xml文件

配置权限用户,关闭匿名用户能连接到私服下载公共资源包

<server>
         <id>maven-public</id>
         <username>budaos</username>
         <password>budaos_2222!!@@1234</password>
     </server>
<mirrors>
   <!-- mirror
    | Specifies a repository mirror site to use instead of a given repository. The repository that
    | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
    | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
    |
   -->
 <mirror>
    <id>maven-public</id>
    <mirrorOf>*</mirrorOf>
    <name>maven-public</name>
    <url>http://maven.budaos.com/repository/maven-public/</url>
 </mirror>
  
 <mirror>
   <id>nexus-tencentyun</id>
   <name>Nexus tencentyun</name>
   <url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
   <mirrorOf>*</mirrorOf>
   </mirror>
 </mirrors>

> 项目中的pom.xml加入

<repositories>
       <repository>
           <id>maven-public</id>
           <name>maven-public</name>
           <url>http://maven.budaos.com/repository/maven-public/</url>
           <snapshots>
               <enabled>true</enabled>
               <updatePolicy>always</updatePolicy>
               <checksumPolicy>warn</checksumPolicy>
           </snapshots>
           <releases>
               <enabled>true</enabled>
               <updatePolicy>always</updatePolicy>
               <checksumPolicy>warn</checksumPolicy>
           </releases>
       </repository>
   </repositories>


   <distributionManagement>
       <repository>
           <id>maven-public</id>
           <name>maven-releases</name>
           <url>http://maven.budaos.com/repository/maven-releases/</url>
       </repository>
       <snapshotRepository>
           <id>maven-public</id>
           <name>maven-snapshot</name>
           <url>http://maven.budaos.com/repository/maven-snapshots/</url>
       </snapshotRepository>
   </distributionManagement>

标签:maven,索引,仓库,私服,Maven,Nexus,开源
From: https://www.cnblogs.com/budaos/p/18302140

相关文章

  • 写真图片视频打赏系统源码全开源无加密
    这是一款开源的写真图片及视频打赏系统源码,顾名思义他可以做写真图片打赏站也可以做视频打赏站,支付对接了易支付,拥有独立代理后台,全部源码无加密,另外也可以配合付费进群使用。支付扣量、域名防洪这些基本的就不介绍了,看图吧!留给有需要的人!源码下载:图片视频打赏系统源码.zip可......
  • Java中常用的util类库在Maven
    Java中常用的util类库在Maven项目中通常以依赖的形式引入。以下是一些常用的util库及其Maven依赖。ApacheCommonsLang3:提供了很多工具类,如StringUtils,ArrayUtils等。<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artif......
  • 开源缺陷管理系统全解析:如何选择最适合你的?
    国内外主流的10款开源缺陷管理系统软件对比:PingCode、Worktile、Bugzilla、osTicket、MantisBT、Trac、OpenProject、Phabricator、RequestTracker、TheBugGenie。在管理软件项目时,缺陷管理常常是团队面临的一大挑战。选择一个合适的开源缺陷管理系统可以显著提高错误跟踪的......
  • Maven进阶
    一,依赖1,依赖具有传递性直接依赖:在当前项目中通过依赖配置建立的依赖关系间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源2,依赖传递冲突问题路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高声明优先:当资源在相同层级被依赖时,配......
  • .NET MAUI开源架构_2.什么是 .NET MAUI?
    1.什么是.NETMAUI?             .NET多平台应用UI(.NETMAUI)是一个跨平台框架,用于使用C#和XAML创建本机移动和桌面应用。使用.NETMAUI,可从单个共享代码库开发可在Android、iOS、macOS和Windows上运行的应用。         .NETMAUI是......
  • 万界星空科技商业开源MES系统全面解析
    万界星空科技商业开源MES+源码+可拖拽式数据大屏开源MES系统具有定制化、节省成本、开放性和适应性等优势和特点,可以帮助企业更好地管理生产流程。万界星空MES制造执行系统的Java开源版本,为制造业企业提供了全面的生产管理解决方案。万界星空科技的目标是帮助企业提高生产效率......
  • 推荐几个开源HTTP服务接口生成工具
    在现在流行微服务、前后端分离软件开发架构下,基于标准RESTful/JSON的HTTP接口已经成为主流。在实际业务中有很多需要快速开发调用数据服务接口的需求,但团队中缺乏专业的后端开发人员,比如:(1)数据库表已存在,如何快速把数据变成服务,供报表、大屏等数据可视化方式使用。(2)移动APP/H5/小......
  • 推荐几个好用的开源工作流引擎系统
    目前基于Java语言开发的主流开源工作流引擎有osworkflow、jbpm、activiti、flowable、camunda。其中osworkflow、jbpm技术较老已经过时,activiti包括activiti5、activiti6、activiti7三个版本,flowable分开源版和商业版,camunda包括camunda7和camunda8两个系列的版本。这么多版本的开......
  • IDEA 中配置 maven
    前言    IDEA中有自带的maven仓库(捆绑的maven3),但是自带的maven下载的依赖包比较缓慢,我们可以自己下载个maven,然后修改配置文件和本地仓库地址。 1.下载maven链接:Maven–WelcometoApacheMaven怎样选择下载的版本呢?这就要看我们IDEA的版本号是多少了,一般......
  • 第二部分:关键技术领域的开源实践【在线办公协同利器OnlyOffice】
    OnlyOffice是一个开源的文档编辑和协作平台,它提供了一套完整的在线办公解决方案,包括文字处理、电子表格、演示文稿编辑以及项目管理和客户关系管理(CRM)功能。OnlyOffice的主要特点在于其深度集成能力和高度定制性,允许企业将其集成到现有的企业资源规划(ERP)、内容管理系统(CMS)和其他......