前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nexus3常用功能备忘

Nexus3常用功能备忘

作者头像
程序员欣宸
发布2020-05-26 14:31:34
1.2K0
发布2020-05-26 14:31:34
举报
文章被收录于专栏:实战docker实战docker

关于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)》

新建仓库用作缓存

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

  1. 新建仓库的操作如下图:
  1. 在类型选择页面选中maven2(proxy),如下图红框:
  1. 接下来的页面只要填两处,名字:aliyun-proxy,remote storage:http://maven.aliyun.com/nexus/content/groups/public/ ,如下图红框:
  1. 提交表单后回到列表页面,在新增的仓库上点击copy按钮即可得到仓库地址,如下图:
  1. 记下这个仓库的地址(http://192.168.50.43:8081/repository/aliyun-proxy/),内网所有电脑都能从这里地址获取中央仓库jar包,设置方法后面会说到;

新建仓库用作私有仓库

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

  1. 再新建一个仓库,类型选择maven2(hosted),如下图红框:
  1. 名字:nexus-private,其他的不需要修改:
  1. 这里要注意的是,如果您创建的私有仓库用来保存自己发布的二方库,最好建两个,一个用来保存正式发布的,Version policy类型:Release,另一个保存开发中的(maven本地不缓存),Version policy类型是Snapshot,本文为了简单起见只建了一个Release类型的;
  2. 记下这个仓库的地址:http://192.168.50.43:8081/repository/nexus-private/
  3. 至此,仓库创建完毕,我们一共有以下两个仓库: 缓存型:http://192.168.50.43:8081/repository/aliyun-proxy/ 本地私有型:http://192.168.50.43:8081/repository/nexus-private/
  4. 有了仓库,接下来设置开发环境上的Maven了;

Maven设置(使用缓存仓库)

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

  1. 打开maven的配置文件settings.xml;
  2. 找到mirrors节点,增加一个server而配置,内容如下:
代码语言:javascript
复制
<mirror>
  <id>aliyun-proxy</id>
  <mirrorOf>*</mirrorOf>
  <url>http://192.168.50.43:8081/repository/aliyun-proxy/</url>
</mirror>
  1. 缓存仓库的设置已经完成了,接下来通过构建maven工程验证一下,下面是个最简单的maven工程的pom.xml文件:
代码语言:javascript
复制
<?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>
  1. 在pom.xml所在目录执行命令:mvn clean compile -U -DskipTests ,如下图,可见是通过nexus3下载中央仓库的jar,然后项目构建成功:

中央仓库不存在的jar

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

  1. 在pom.xml中添加一个中央仓库不存在的jar:
代码语言:javascript
复制
<dependency>
  <groupId>io.confluent</groupId>
  <artifactId>kafka-schema-registry-client</artifactId>
  <version>3.3.1</version>
</dependency>
  1. 再去构建就会报错:

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

上传jar到私有仓库

解决上述问题的思路:找到这个jar -> 上传到私有仓库 -> maven构建时从私有仓库下载这个jar;

  1. 思路有了,现在来试着用私有仓库解决上面的问题;
  2. 把上述jar下载到本地,下载地址:http://packages.confluent.io/maven/io/confluent/kafka-schema-registry-client/3.3.1/kafka-schema-registry-client-3.3.1.jar
  3. 登录nexus3,按照如下步骤操作:
  1. 填写表单,按照下图步骤操作,把jar文件提交到nexus3:
  1. 现在私有仓库中已经有jar了,接下来看看maven如何使用这个jar文件;

maven使用私有仓库

  1. 打开maven的配置文件settings.xml;
  2. 找到profiles节点,增加一个profile的配置,内容如下:
  1. 找到activeProfiles节点,增加一个activeProfile而配置,内容如下:
代码语言:javascript
复制
<activeProfile>nexus3</activeProfile>
  1. 找到刚才新增的mirror,修改其mirrorOf节点的值,修改后的mirror节点值如下:
代码语言:javascript
复制
<mirror>
  <id>aliyun-proxy</id>
  <mirrorOf>external:local-nexus3</mirrorOf>
  <url>http://192.168.50.43:8081/repository/aliyun-proxy/</url>
</mirror>
  1. mirrorOf的值从之前的*改成external:local-nexus3,是做了转发逻辑的排除操作,这样做了之后,local-nexus3仓库的请求会转发到私有仓库,而其他所有的请求都转发到了缓存仓库aliyun-proxy;
  2. 再次构建刚才的maven项目,这次终于构建成功了,如下图,kafka-schema-registry-client相关的数据都从私有仓库下载:

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于nexus3
  • 环境信息
  • nexus3的部署
  • 新建仓库用作缓存
  • 新建仓库用作私有仓库
  • Maven设置(使用缓存仓库)
  • 中央仓库不存在的jar
  • 上传jar到私有仓库
  • maven使用私有仓库
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档