在Ubuntu上搭建Nexus服务

news2024/11/15 19:38:27

介绍

Nexus:Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。如Android远程仓库依赖,Java服务端应用程序依赖等,都很方便。

Docker方式

准备

ubuntu上已经安装docker,docker安装过程可以参考笔者另一篇文章。

运行

在docker上安装nexus的步骤提炼自官网,也可以直接参考官方手册(直接看持久化数据章节):Docker

  1. 在宿主机上创建一个卷,用于存放数据:
sudo mkdir -p /usr/local/docker/nexus-data && sudo chown -R 200 /usr/local/docker/nexus-data
  1. 在docker上下载运行(自动下载)nexus镜像
sudo docker run -d -p 8081:8081 --name nexus -v /usr/local/docker/nexus-data:/nexus-data sonatype/nexus3

-d:后台运行容器,并返回容器ID

-p:指定端口映射,格式为:主机(宿主)端口:容器端口

--name:容器名称

-v:绑定一个数据卷

  1. 停止nexus,给足够时间释放资源
sudo docker stop --time=120 nexus

验证

请求html页面:

curl http://localhost:8081

二进制包方式方式:

下载并安装

  1. 下载:Nexus免费版官方下载,若网络环境不好需要上网工具,填写简单的问卷调查单就可以免费下载,Nexus可以支持多种操作系统,这里选择UNIIX版本,地址:Nexus Repository OSS - Software Component Management | Sonatype
  2. 解压:
    1. 将下载后的.tar.gz文件放到/usr/local/
    2. 解压到当前目录,解压后会生成两个目录,分别是nexus-3.43.0-01(安装目录)和sonatype-work(工作目录)。解压指令sudo tar -zxvf nexus-3.43.0-01-unix.tar.gz
bw@bw-linux:/usr/local$ ls -ahl
total 201M
drwxr-xr-x 12 root root 4.0K 1213 13:51 .
drwxr-xr-x 14 root root 4.0K  89 19:48 ..
drwxr-xr-x  2 root root 4.0K  89 19:48 bin
drwxr-xr-x  2 root root 4.0K  89 19:48 etc
drwxr-xr-x  2 root root 4.0K  89 19:48 games
drwxr-xr-x  2 root root 4.0K  89 19:48 include
drwxr-xr-x  3 root root 4.0K  89 19:48 lib
lrwxrwxrwx  1 root root    9 1212 18:26 man -> share/man
drwxr-xr-x 10 root root 4.0K 1213 13:51 nexus-3.43.0-01
-rwxrwxrwx  1 root root 201M 1213 11:05 nexus-3.43.0-01-unix.tar.gz
drwxr-xr-x  2 root root 4.0K  89 19:48 sbin
drwxr-xr-x  7 root root 4.0K  89 19:51 share
drwxr-xr-x  3 root root 4.0K 1213 13:51 sonatype-work
drwxr-xr-x  2 root root 4.0K  89 19:48 src

运行

运行指令:/usr/local/nexus-3.43.0-01/bin/nexus start

验证

请求html页面:

curl http://localhost:8081

Nexus配置

配置前的准备

首先浏览器中进入Nexus管理页面:http://localhost:8081,右上角点击登录,需要提供初始密码:

cat /usr/local/docker/nexus-data/admin.password

随后系统要求修改初始密码,这里修改密码为:***

仓库简单介绍

首先按照上图1、2两步设置和仓库,进入仓库列表页面。列表中只需要关注maven-*相关仓库即可,这里分别对A,B,C三个类型仓库做一个说明:

A:代理,代理中央maven库,来自互联网,具体地址可以点进去看,这里不展开说明。

B:组,打包A,C等库到一起,单点对外提供服务。

C:本机(宿主机)仓库,存放自定义上传库,release-发行库稳定库,snapshots-调试库不稳定库。

添加阿里云代理

添加阿里云,1是可以增加访问国外库速度,2是可以添加中央maven库中没有的资源。

  1. 创建库,点击如下按钮:
  1. 选择maven2(proxy)

  1. 输入仓库名,可随意,这里用aliyun-publick-proxy
  1. 输入阿里仓库地址,https://maven.aliyun.com/repository/public。(这里提供阿里maven仓库集合,可根据自身需求灵活选择:仓库服务 (aliyun.com)
  1. 点击创建仓库后,自动返回仓库列表。由于笔者做安卓开发需要更多库,重复1-4步再添加其他代理库,同理可根据自身开发需求添加一个或多个库。

  1. 将上述新增库添加到组内:仓库列表页点击maven-public, 将新增的库添加到组内,并调整仓库优先级。点击保存。

宿主机仓库配置

宿主机上传使用的地址选择哪个(些)根据团队开发而定,也就是上述的maven-release和maven-snapshots仓库地址。关于上传有一点需要注意,就是是否允许同一版本库重复上传,由于单人/多人协同开发中,maven版本号匹配机制以及本地仓库缓存机制,强烈建议禁用重复上传。这里用maven-release仓库演示,maven-snapshots仓库同理。

  1. 在仓库列表页点击maven-release仓库,进入仓库配置页。
  1. 找到部署规则节点,将其设置为Disable redeploy。点击保存。

使用

建议:上述配置完成后,团队中使用时可能会考虑到权限管理,可以创建开发账号代替管理账号,详细用法可以参考下一章节,权限管理

笔者这里使用开发角色账号做使用演示,管理员角色账号操作相同。

下载

在浏览页面中,拷贝对外暴露的组地址。(代理和宿主机上的仓库,都会从该地址下载。)

maven

maven中使用私服链接下载,在pom.xml中配置。参考阿里配置文档:仓库服务 (aliyun.com)

gradle

gradle7.+版本中使用私服链接下载,在project级build.gradle或者setting.gradle中配置。

pluginManagement {
    repositories {
//        gradlePluginPortal()
//        google()
//        mavenCentral()
        maven{
            allowInsecureProtocol true
            url 'http://172.17.101.51:8081/repository/maven-public/'
        }
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
//        google()
//        mavenCentral()
        maven{
            allowInsecureProtocol true
            url 'http://172.17.101.51:8081/repository/maven-public/'
        }
    }
}
  1. 用私服替换掉所有的默认仓库
  2. 由于私服未采用https,需要加上标志:allowInsecureProtocol true
  3. sync验证

上传

这里使用maven-release库作为上传库,maven-snapshots同理。如果团队规模大,对库稳定性有极高要求,建议同时加上maven-snapshots库,便于测试、维护。在浏览页面中,拷贝maven-release地址。

maven

maven中使用私服链接上传,在pom.xml中配置。参考阿里配置文档:仓库服务 (aliyun.com)

gradle

  1. 配置需要上传模块/库级的gradle文件,这里用的gradle版本是7.+,以Android模块举例:
plugins {
    id 'com.android.library'
    id 'maven-publish'
}

android {
    ...
}

publishing {
    publications{
        maven(MavenPublication){
            artifactId = 'lib_base'
            groupId = 'com.xx.xx.xx'
            version = '1.0.0'
        }
    }
    repositories {
        maven{
            allowInsecureProtocol true
            url 'http://172.17.101.51:8081/repository/maven-releases/'
            credentials {
                username '***'
                password '***'
            }
        }
    }
}

这里只需要配置2步:

    1. 添加插件:maven-publish
    2. 添加publishing任务:publishing{}
  1. 上传
    1. 方式一:Android工程执行根目录通过命令行执行:./gradlew publish
    2. 方式二:双击工程publish任务

上传结果验证

打开nexus管理页面,按下图步骤,进入maven-release库内部,可以看到刚才上传的库

权限管理

在nexus3.x中,默认有admin和anonymous两个角色权限,开发中,如果团队较大,直接把admin权限下放容易被欠缺经验的同学搞崩溃,而anonymous缺少上传库权限,那么就强烈建议创建一个开发者角色:

创建角色

由于nexus默认只有2个角色,因此这里先创建带有固定权限的角色。

  1. 创建角色

  1. 填写基本信息

  1. 分配权限,分配权限的原则是够用就行。这里只需要分配maven-release和maven-snapshots两个库权限,并且尽量不分配两库下:*/delete/admin-edit这三个权限。
  1. 集成匿名角色
  1. 保存并退回到角色列表页面,可以看到刚才创建的角色

创建用户

  1. 点击用户->创建本地用户
  1. 保存后返回用户列表页面可以看到刚才创建的dev用户
  1. 验证

使用-上传章节中的账号密码改为此处创建的角色账号密码,再次执行上传验证。笔者这里已经验证通过就不再详述。

总结

Nexus私服在maven和gradle体系的技术团队中,十分好用。当然大家也可以直接使用阿里现成的maven私库,免费空间足够小型项目使用:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/98644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20221218解决在Ubuntu18.04下编译Firefly的Core-3588J出现lz4的问题

20221218解决在Ubuntu18.04下编译Firefly的Core-3588J出现lz4的问题 2022/12/18 15:37 解决方法:编译最新的lz4的dev分支! https://wiki.t-firefly.com/zh_CN/Core-3588J/android_compile_android12.0_firmware.html Core-3588J产品规格书 3. 编译 Andro…

Bootstrap5 小工具

Bootstrap 5 提供了很多有用的类来帮组我们快速实现效果&#xff0c;不需要重复写一些 CSS 代码。 背景颜色 设置不同元素的背景颜色时&#xff0c;需要通过 .text-* 类来设置匹配的文本颜色&#xff1a; 实例 <div class"p-3 mb-2 bg-primary text-white">.…

跟老韩学JAVA——IDEA基本使用和快捷键

1. IDEA介绍 2.IDEA下载和安装 这个博主的下载安装介绍的很详细了&#xff0c;我就不过多介绍了 3.IDEA的基本使用 1&#xff09;修改字体大小 File -> Settings -> Editor -> Font -> Size 2)修改字体变粗 3)修改背景颜色 4) 修改菜单栏字体大小 5&#xff…

滑动窗口思想练习题

文章目录1. 找到字符串中所有字母异位词做法一&#xff1a;采用两个数组分别记录字符出现频次做法二&#xff1a;采用diff记录s和p字符串中字符的频次差2. 串联所有单词的子串个人理解&#xff0c;如有异议&#xff0c;欢迎指正&#xff01;1. 找到字符串中所有字母异位词 题目…

XiaoMi手机MIX 2S线刷固件和刷入Recovery

mix 2s 固件下载地址 https://web.vip.miui.com/page/info/mio/mio/detail?postId4865868&app_versiondev.20051 miflash线刷工具下载地址 https://miuiver.com/miflash/ 安装miflash线刷工具 点击安装驱动 打开miflash 手机关机按音量下加开机键进入bootloader&#xf…

Spring boot整合rocketmq(windows)

目录 1.环境搭建 2.命名服务器和业务服务器的启动 3.名词说明 4.执行步骤 5.示例 1.导入依赖 2.配置(至少指定下面两个) 3.代码 6.常见问题 1.环境搭建 下载地址&#xff1a;https://rocketmq.apache.org/解压缩进行安装&#xff0c;默认服务端口&#xff1a;9876 环…

执行 select ... for update 语句,如果查询条件没有索引字段的话,是加行锁还是加表锁?

大家好&#xff0c;我是小林。 昨天在群里看到大家在讨论一个 MySQL 锁的问题&#xff0c;就是执行 select … for update 语句&#xff0c;如果查询条件没有索引字段的话&#xff0c;是加「行锁」还是加「表锁」&#xff1f; 如果你做过这个实验的话&#xff0c;你会发现执行…

数据结构刷题训练营1

开启蓝桥杯备战计划&#xff0c;每日练习算法一题&#xff01;&#xff01;坚持下去&#xff0c;想必下一年的蓝桥杯将会有你&#xff01;&#xff01; 笔者是在力扣上面进行的刷题&#xff01;&#xff01;由于是第一次刷题&#xff01;找到的题目也不咋样&#xff01;所以&a…

SPRING-了解3-注解

IOC容器操作Bean 注解格式&#xff1a;注解名称(属性名称属性值,属性名称属性值) 放在类&#xff0c;方法&#xff0c;属性都可以 目的&#xff1a;简化XML配置 对象创建四大注解 1&#xff09;用的位置不是强制的 Component 最普通 Service 用在service层 Controlle…

接口测试(十)—— telnet和python代码测试dubbo接口

目录 一、传智健康项目介绍 1、项目描述 2、目标用户群体 3、项目模块 4、系统框架 二、Dubbo接口测试 1、RPC 2、Dubbo 3、查阅API文档 三、Telnet工具远程调用 1、启用telnet 2、telnet远程连接服务 3、telnet调用服务接口 四、python借助dubbo远程调用 1、安…

MySQL~JDBC

10、JDBC&#xff08;重点&#xff09; 10.1、数据库驱动 驱动&#xff1a;声卡、显卡、数据库 我们的程序会通过 数据库 驱动&#xff0c;和数据库打交道&#xff01; 10.2、JDBC SUN公司为了简化 开发人员的&#xff08;对数据库的统一&#xff09;操作&#xff0c;提供了…

剑指offer常见题 - 链表问题(一)

二叉树相关算法 链表相关知识点&#xff1a; 链表是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 知识点一&#xff1a;链表由一系列结点&#xff08;链表中每一个元素称为结点&#xff09;组成&#xff0c;…

IDEA中如何使用Vim?看完本教程,让你用IDEA用到爽~(建议收藏)

目录 前言 Vim有什么特点&#xff1f; 为什么我要安利你在 IEAD 中使用Vim? Vim 一、环境配置 二、Vim的使用 2.1、方向键 hjkl 2.2、​编辑复制&粘贴 2.3、选择代码块并删除 2.4、块级删除 2.5、各种插入模式 2.5.1、以下是gif演示 2.6、jump&#xff08;解放鼠…

毕业设计 stm32智能电子秤系统 - 物联网 嵌入式 单片机

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 STM32F103C8T64.2 HX711压力传感器5 部分核心代码6 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&…

【OpenCV】Ubuntu配置OpenCV环境

1.从官网下载opencv包拷贝到虚拟机Ubuntu中&#xff0c; 虚拟机与主机传输文件可以采用 vmware tool、共享文件夹或者远程连接工具 2.解压得到对应版本号文件夹&#xff0c;我的是opencv-3.4.2 3.修改文件权限chmod -R 777 opencv-3.4.2 从win10进入Ubuntu中的文件压缩包解…

2022年云南省—信息安全管理与评估赛项竞赛规程

2022年云南省职业院校技能大赛 信息安全管理与评估赛项竞赛规程 一、赛项名称 赛项编号&#xff1a;No.11 赛项名称&#xff1a;信息安全管理与评估 英语翻译&#xff1a;Information Security Management and Evaluation 赛项组别&#xff1a;高职组 赛项归属产业&a…

本周大新闻|John Carmack从Meta离职,OPPO发布双目AR一体机仅38g

本周大新闻&#xff0c;AR方面&#xff0c;微软已向客户承诺新款HoloLens&#xff1b;NASA成立Joint AR项目&#xff0c;计划在宇航服头盔中加入AR功能&#xff1b;OPPO Air Glass 2发布&#xff0c;双目光波导仅38g&#xff1b;Rokid开设全球首家品牌旗舰店&#xff1b;谷歌为…

【数据结构】二叉树的节点总个数、叶子节点个数、第K层节点个数、二叉树的深度

目录 1.结点总个数 1.1 局部静态变量法 思维 代码 不足之处 2.传指针法 程序代码 3.递归法 思想 程序代码 详细过程 2.叶子节点个数 思想 程序代码 3.第K层节点个数 思想 程序代码 4.二叉树深度 思想 程序代码 求二叉树节点总个数、叶子节点个数、第k层节点…

汀丶的创作纪念日

机缘 csdn的博龄5年了&#xff0c;但实际创作时间只有两年&#xff1b;第一次接触csdn主要是用来查找代码bug并收藏一些有价值博客&#xff0c;但渐渐地自己也就习惯把自己学到的知识和技术分享出来&#xff0c;一起共建。 主要是关于机器学习、强化学习、数据挖掘、强化学习以…

ADI Blackfin DSP处理器-BF533的开发详解62:DSP控制ADXL345三轴加速度传感器-贪食蛇游戏(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度传感器的子卡&#xff0c;插在这个板子上&#xff0c;然后写了一些有意思的应用程序。 代码实现功能…