写点什么

Nexus3 常用功能备忘

作者:程序员欣宸
  • 2022-12-09
    广东
  • 本文字数:2243 字

    阅读完需:约 7 分钟

Nexus3常用功能备忘

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

关于 nexus3

  • Java 开发者常在内网部署 nexus3 作为以下用途:


  1. 中央仓库的的缓存;

  2. 内网私有仓库;


  • 接下来分别实战这两个功能;

环境信息

  1. nexus3 版本:3.19.1

  2. maven 版本:3.6.3

  3. JDK:1.8.0_191

nexus3 的部署

  • 本文聚焦 nexus3 的使用,不在此讨论部署的细节,推荐使用 docker 来部署,我这里是在一台家用 NAS 上通过 docker 部署的,详情可参考《群晖DS218+做maven私服(nexus3)》

新建仓库用作缓存

  • 这里的中央仓库选用阿里云的,速度和稳定性都比较出色:

  • 新建仓库的操作如下图:

  • 在类型选择页面选中 maven2(proxy),如下图红框:

  • 接下来的页面只要填两处,名字:aliyun-proxy,remote storage:http://maven.aliyun.com/nexus/content/groups/public/ ,如下图红框:

  • 提交表单后回到列表页面,在新增的仓库上点击 copy 按钮即可得到仓库地址,如下图:

  • 记下这个仓库的地址( http://192.168.50.43:8081/repository/aliyun-proxy/ ),内网所有电脑都能从这里地址获取中央仓库 jar 包,设置方法后面会说到;

新建仓库用作私有仓库

  • 对于中央仓库没有的 jar,以及项目中发布的二方库,都可以存放到私有仓库;

  • 再新建一个仓库,类型选择 maven2(hosted) ,如下图红框:

  • 名字: nexus-private ,其他的不需要修改:

  • 这里要注意的是,如果您创建的私有仓库用来保存自己发布的二方库,最好建两个,一个用来保存正式发布的,Version policy 类型:Release,另一个保存开发中的(maven 本地不缓存),Version policy 类型是 Snapshot,本文为了简单起见只建了一个 Release 类型的;

  • 记下这个仓库的地址: http://192.168.50.43:8081/repository/nexus-private/

  • 至此,仓库创建完毕,我们一共有以下两个仓库: 缓存型http://192.168.50.43:8081/repository/aliyun-proxy/ 本地私有型http://192.168.50.43:8081/repository/nexus-private/

  • 有了仓库,接下来设置开发环境上的 Maven 了;

Maven 设置(使用缓存仓库)

  • 先做 aliyun-proxy 仓库的设置,这样就可以使用 nexus3 的缓存功能了:

  • 打开 maven 的配置文件 settings.xml

  • 找到 mirrors 节点,增加一个 server 而配置,内容如下:


<mirror>  <id>aliyun-proxy</id>  <mirrorOf>*</mirrorOf>  <url>http://192.168.50.43:8081/repository/aliyun-proxy/</url></mirror>
复制代码


  • 缓存仓库的设置已经完成了,接下来通过构建 maven 工程验证一下,下面是个最简单的 maven 工程的 pom.xml 文件:


<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.bolingcavalry</groupId>    <artifactId>nexus3demo</artifactId>    <version>1.0-SNAPSHOT</version>    <dependencies>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.2.28</version>        </dependency>    </dependencies></project>
复制代码


  • 在 pom.xml 所在目录执行命令: mvn clean compile -U -DskipTests ,如下图,可见是通过 nexus3 下载中央仓库的 jar,然后项目构建成功:

中央仓库不存在的 jar

  • 私有仓库的一个重要功能,就是提供中央仓库之外的 jar 下载,接下来举个例子:

  • 在 pom.xml 中添加一个中央仓库不存在的 jar:


<dependency>  <groupId>io.confluent</groupId>  <artifactId>kafka-schema-registry-client</artifactId>  <version>3.3.1</version></dependency>
复制代码


  • 再去构建就会报错:

  • 上述问题是常见的,有的 jar 没有发布到中央仓库,用 maven 构建时找不到就报错了。

上传 jar 到私有仓库

maven 使用私有仓库

  • 打开 maven 的配置文件 settings.xml;

  • 找到 profiles 节点,增加一个 profile 的配置,内容如下:

  • 找到 activeProfiles 节点,增加一个 activeProfile 而配置,内容如下:


<activeProfile>nexus3</activeProfile>
复制代码


  • 找到刚才新增的 mirror,修改其 mirrorOf 节点的值,修改后的 mirror 节点值如下:


<mirror>  <id>aliyun-proxy</id>  <mirrorOf>external:local-nexus3</mirrorOf>  <url>http://192.168.50.43:8081/repository/aliyun-proxy/</url></mirror>
复制代码


  • mirrorOf 的值从之前的 ***** 改成 external:local-nexus3 ,是做了转发逻辑的排除操作,这样做了之后,local-nexus3 仓库的请求会转发到私有仓库,而其他所有的请求都转发到了缓存仓库 aliyun-proxy

  • 再次构建刚才的 maven 项目,这次终于构建成功了,如下图, kafka-schema-registry-client 相关的数据都从私有仓库下载:

  • 至此,nexus3 常用的缓存和私有仓库功能都尝试过了,如果您正在搭建私有 maven 仓库,希望本文能够给您提供参考。

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 2022-12-09阅读数: 31
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018-04-19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论 (1 条评论)

发布
用户头像
平台老人了,下次别带别的平台的水印了
2022-12-09 10:22 · 广东
回复
没有更多了
Nexus3常用功能备忘_Java_程序员欣宸_InfoQ写作社区