企业级项目管理工具使用Maven之Nexus搭建私服

企业级项目管理工具使用Maven之Nexus搭建私服Nexus私服搭建 关于作者 作者介绍 1、序言 Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。有三种专门的Maven仓库管理软件可以用来帮

Nexus私服搭建

关于作者

  • 作者介绍

🍓 博客主页:作者主页
🍓 简介:JAVA领域优质创作者🥇、一名在校大三学生🎓、在校期间参加各种省赛、国赛,斩获一系列荣誉🏆
🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨‍💻


1、序言

Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:

Apache基金会的Archiva、JFrog的Artifacotory和Sonatype的Nexus,Archiva是开源的,Artifacotory和Nexus的核心也是开源的。

Nexus 是“开箱即用”的系统,不需要数据库,它使用文件系统加 Lucene 来组织数据,支持 WebDAV 与 LDAP 安全身份认证。Nexus 还提供了强大的仓库管理功能,构件搜索功能,它基于 REST,友好的 UI 是一个 extjs 的 REST 客户端,它占用较少的内存,基于简单文件系统而非数据库。Nexus 极大地简化了本地内部仓库的维护和外部仓库的访问。另外,Nexus 还可以在代理远程仓库的同时维护本地仓库,以降低中央仓库的负荷,节省外网带宽和时间。 本篇 Nexus 选择 3.x 版本的安装

2、私服是什么?

私服是指私有服务器,是假设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当maven需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,在提供给本地仓库下载.

👦👦👦肯定有小伙伴又要问了

3、Nexus是什么?

Nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问

Nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据

Nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过IDEA和Eclipse集成使用

Nexus支持WebDAV与LDAP安全身份认证

Nexus提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,占用较少的内存,基于简单文件系统而非数据库

4、为什么要构建Nexus私服?

  • 内网访问,节省外网带宽。
  • 一次外网下载,内网所有用户就可以只下载私服缓存,加速 Maven 项目构建。
  • 允许上传和下载私有库,并且不被外部访问,更加安全。
  • 减少外部网络因素,提供项目构建的稳定性。
  • 方便内部项目服务的依赖引用,而不需要其他项目的完整源代码。
  • 有利于公共构件的维护
  • 提高工作效率

👨‍💻了解完这些基本的概念,我们要开始真正的实战技术了

5、Nexus下载

我们选择使用最流行的开源 Maven 仓库管理软件—Nexus,来快速搭建 Maven 私服

厂长为大家提供了两种下载方法:

Nexus的官网 www.sonatype.com/products/re…

百度网盘 链接:pan.baidu.com/s/1axGwnPzZ… 提取码:wpzr

CSDN资源下载

正在提交中······

6、使用Nexus搭建私服

1)免安装的,下载下来,解压直接运行即可。

image-20211029114446249

2)配置下环境变量

这样做的目的是在全局的cmd窗口下都可以进行启动

image-20211029115526771

3)运行

windows+R—》输入cmd—》nexus /run

image-20211028192112720

出现这个框框,就表示启动成功了😃😃😃。

4)检验

在浏览器的地址栏输入:http://localhost:8081/ 访问

image-20211028193718587

注意:可以修改默认端口 nexus\nexus-3.20.1-01\etc\nexus-default.properties

image-20211029120413896

😎解决方案:登陆私服时密码不对的问题

旧版本   账号 admin   密码 admin123 新版本(推荐)   默认的UserName:admin 第一次登陆的时的密码是随机生成的在admin.password文件里面 复制密码登陆 image-20211028193854037

登录后就会出现提示框修改密码,按照提示修改密码就可以使用自己设置的密码进行登录。

7、私服的使用

1)Repositories

  1. hosted:本地仓库(也叫宿主仓库),通常我们会部署自己的构件到这一类型的仓库或者是第三方的包(如:oracel的)。
  2. proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  3. group:仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组
  4. maven-central:maven中央库,默认从repo1.maven.org/maven2/拉取ja…
  5. maven-releases:私库发行版jar
  6. maven-snapshots:私库快照(调试版本)jar
  7. maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。

Hosted是宿主机的意思,有三种方式:Releases、Snapshot、Mixed

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

proxy就是代理的意思,代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。这样的优势只要其中一个人从中央库下来了,以后大家都是从Nexus私服上进行下来,私服一般部署在内网,这样大大节约的宽带。

Name:就是为代理起个名字 Remote Storage: 代理的地址,Maven的地址为: repo1.maven.org/maven2/ Blob Store: 选择代理下载包的存放路径

2)创建Proxy Repository代理仓库。

image-20211029132111057

image-20211029132644408

image-20211029132916642

Nexus aliyun
http://maven.aliyun.com/nexus/content/groups/public

3)新建自定义的仓库

image-20211029132111057

image-20211029133207132

image-20211029133401799

4)自定义组资源库

image-20211029132111057

image-20211029133448548

image-20211029133955897

8、在Maven项目使用 Nexus 私服

1)创建角色

一个角色下有多个用户 ,有了角色才能分配给用户权限

image-20211029163659661

image-20211029215552348

2)创建用户

image-20211029215717376

image-20211029215953846

3)maven setting.xml文件配置

定义jar包下载的Maven仓库、定义部署服务器。 但是某些配置例如username和password就保存在构建服务器中的settings.xml中。

id:server 的id,用于匹配distributionManagement库id,比较重要。 username,password:用于登陆此服务器的用户名和密码 privateKey,passphrase:设置private key,以及passphrase filePermissions,directoryPermissions:当库文件或者目录创建后,需要使用权限进行访问。参照unix文件许可,如664和775 mirrors:表示镜像库,指定库的镜像,用于增加其他库。mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。 id,name:唯一的标志,用于区别镜像 url:镜像的url mirrorOf:此镜像指向的服务id

servers标签的配置

<servers>
    <!-- server | Specifies the authentication information to use when connecting to a particular server, identified by | a unique name within the system (referred to by the 'id' attribute below). | | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are | used together. | -->
    <!--自定义maven本地仓库地址 注意斜杠是反的-->
    <localRepository>E:/enviroment/repository</localRepository>
    <server>
      <id>release</id>
      <username>admin</username>
      <password>123456</password>	<!-- 这里的密码是之前你修改的密码-->
    </server>
    
    <server>
      <id>snapshots</id>
      <username>admin</username>
      <password>123456</password>	<!-- 这里的密码是之前你修改的密码-->
    </server>
</servers>

profiles标签的配置

<profiles>
	<profile>
      <id>default_profile</id>
      <repositories>
        <!--包含需要连接到远程仓库的信息 -->
        <repository>
          <!--远程仓库唯一标识 -->
          <id>nexus</id>
          <!--远程仓库名称 -->
          <name>maven-public</name>
          <!--如何处理远程仓库里发布版本的下载 -->
          <releases>
            <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
            <enabled>true</enabled>
            <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
            <updatePolicy>never</updatePolicy>
            <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 -->
          <snapshots>
            <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
            <enabled>true</enabled>
            <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
            <updatePolicy>always</updatePolicy>
            <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
            <checksumPolicy>warn</checksumPolicy>
          </snapshots>
          <!--远程仓库URL,按protocol://hostname/path形式 -->
          <url>http://localhost:8081/repository/maven-public/</url>
          <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。 -->
          <layout>default</layout>
        </repository>
      </repositories>
      
      <pluginRepositories>  
        <pluginRepository>  
          <id>maven-net-cn</id>  
          <name>Maven China Mirror</name>  
          <url>http://localhost:8081/repository/maven-public/</url>  
          <releases>  
            <enabled>true</enabled>  
          </releases>  
          <snapshots>  
            <enabled>true</enabled>  
          </snapshots>      
        </pluginRepository>  
      </pluginRepositories> 
  
    </profile>
</profiles>

4)部署仓库的用POM中distributionManagement元素来定义的。

<distributionManagement>
    <repository>
        <id>maven-releases</id>
        <name>Nexus Release Repository</name>
        <url>http://localhost:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>maven-snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

接着执行部署命令 mvn clean deploy

到这里Nexus私服就配置好了!谢谢各位小伙伴的观看。

希望本篇文章对各位的学习有帮助,也希望小伙伴们多多支持厂长,留下你们的爱心💕和赞👍!

后语

厂长写博客目的初衷很简单,希望大家在学习的过程中少走弯路,多学一些东西,对自己有帮助的留下你的赞赞👍或者关注➕都是对我最大的支持,你的关注和点赞给厂长每天更文的动力。

对文章其中一部分不理解,都可以评论区回复我,我们来一起讨论,共同学习,一起进步!

微信(z613500)或者 qq(1016942589) 详细交流。

今天的文章企业级项目管理工具使用Maven之Nexus搭建私服分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/14128.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注