Maven私服创建--Nexus

目录

一、概述

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 out
        at 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 out
        at 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,可以看到下载到本地私服的依赖。验证成功。

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀神lwz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值