小知识:利用Docker搭建Nexus私有仓库实现Maven私服

一、前言

相信国内的小伙伴都经历过,Gradle、Maven、NPM下拉速度过慢的情况。我们一般的做法是配置阿里云这样的中央仓库。加速问题是可以采用这种方式解决,但如果是团队内部的库想进行上传分发,传到Maven Central这种共用的Maven仓库就不太合适了。那样保密性和时效性都将收到破坏。所以在团队内部,我们一般都会搭建局域网内私有的中央仓库。支撑这种私有仓库的软件就是Nexus,本文将详细介绍如何从零搭建、上传库、下拉库整个使用过程。

二、Nexus搭建

现如今万物皆可Docker,我们没必要破坏本机系统原生安装了。直接新建一个docker-compose.yml文件,写入如下内容:

version: “3.1” services: nexus: restart: always image: sonatype/nexus3 container_name: nexus ports: – 6005:8081 volumes: – /data/Docker/nexus/data:/nexus-data

注意最后一行volumens映射的位置,如需备份还原,只需要将这个文件夹打包恢复即可。

写好后,运行docker-compose up -d运行即可。然后访问服务器的6005端口,看到这个界面就算搭建成功了。

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-猿站网-插图

三、配置仓库

搭建好后,会有一些默认的仓库:

maven-central:maven 中央库,默认从 https://repo1.maven.org/maven2/ 拉取 jar

maven-releases:私库发行版 jar maven-snapshots:私库快照(调试版本)jar

maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务

概念说明:

group:这是一个仓库聚合的概念,用户仓库地址选择 Group 的地址,即可访问 Group中配置的,用于方便开发人员自己设定的仓库。maven-public 就是一个 Group 类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x 默认为Releases、Snapshots、Central,当然你也可以自己设置。

hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的 jar 文件 snapshots:本地项目的快照仓库

releases: 本地项目发布的正式版本

proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration 页签下 Remote Storage 属性的值即被代理的远程仓库的路径),如可配置阿里云 maven 仓库

central:中央仓库

3.1 配置加速库

我们通过上文了解到,Nexus默认会从maven.org拉取我们需要的公共库。我们需要配置一个阿里云的加速库,这样凡是需要公共库的都会优先从阿里云加速下载。在设置中,点击创建仓库。

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-1猿站网-插图

可以看到,我们可以创建多种仓库,Docker、Maven、NPM、Yum都可以。本文就以Maven为例了,其他仓库都类似。

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-2猿站网-插图

可以写个名字,然后在Remote Storage的地址栏中,输入阿里云的Maven仓库:http://maven.aliyun.com/nexus/content/groups/public/

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-3猿站网-插图

写好后,就可以保存了。然后再进入maven-public组的设置,将我们刚刚创建的aliyun-repository代理库添加到右边,并调到第一个位置。这样一些公共库比如Spring就会默认从阿里云那边下载,并且Nexus会自带缓存功能,只有第一次需要下载。后续将直接从局域网的Nexus下载,大大加快了下载速度。(非常适合没有外网开发的团队)

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-4猿站网-插图

3.2 创建私有仓库

配置好Maven的基础加速库后,我们就来创建一个团队内部使用的Maven仓库。我们继续点击创建仓库,这里选择maven2(hosted)。

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-5猿站网-插图

Version policy下面有Release(正式版)、Snapshots(测试版)、Mixed(混合)三个选项,其实和我们平时引用第三方的库是一样的,只是我们一般会引用第三方库的正式版。Deployment policy这里我选择了Allow redeploy可以覆盖上传,你可以根据自身情况调整下面这些参数。

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-6猿站网-插图

创建好后就可以直接使用了。但在此之前,我们最好配置一下开发账号,因为上传库的时候需要有账号密码。如果直接把系统管理员的账号给开发者会比较危险,毕竟现在删库跑路的很多。

四、配置权限

在设置页面的Roles里先创建一个角色:

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-7猿站网-插图

然后只给这个开发这个角色,固定仓库的浏览和编辑权限。

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-8猿站网-插图

最后创建用户,然后将该用户名、密码和该仓库的地址给到开发者就可以了。

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-9猿站网-插图

仓库地址可以点击列表中Copy得到:

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-10猿站网-插图

五、上传Jar包

上传Jar包到私有仓库的方式其实有很多种,我们一般项目中一般会采用Maven或Gradle脚本来进行。Maven大家应该都比较熟了,我这里就用安卓人狂喜的Gradle来演示一下。在build.gradle中编写如下脚本即可上传。

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-11猿站网-插图

方便大佬复制:

group “com.niubi” version “1.0-SNAPSHOT” //加载插件 apply plugin: “java” apply plugin: “maven” apply plugin: “idea” //配置打Jar包的参数 javadoc { failOnError false options.addStringOption(“Xdoclint:none”, “-quiet”) options.addStringOption(“encoding”, “UTF-8”) options.addStringOption(“charSet”, “UTF-8”) } //打包文档 task javadocJar(type: Jar, dependsOn: javadoc) { classifier = “javadoc” from “build/docs/javadoc” } //打包源代码 task sourcesJar(type: Jar, dependsOn: classes) { classifier = “sources” from sourceSets.main.allSource } artifacts { archives jar archives javadocJar archives sourcesJar } uploadArchives { repositories { mavenDeployer { // 开发版 snapshotRepository(url: “http://XXX:6005/repository/GfptLib/”) { authentication(userName: “xxx”, password: “xxx”) } /*// 正式版 repository(url: “http://XXX:8081/repository/maven-releases/”) { authentication(userName: “xxx”, password: “xxx”) }*/ // 只发布jar包 addFilter(“jar”) {artifact, file -> artifact.ext == “jar” } pom.groupId = “$project.group” pom.artifactId = “$project.name” pom.version = “$project.version” } } }

和Maven一样,我们写好后,可以直接在IDEA的Gradle窗口中看到这个命令,双击即可运行上传:

%小知识:利用Docker搭建Nexus私有仓库实现Maven私服-12猿站网-插图

运行成功后,就可以在Maven仓库中看到该Jar包,并可以将该jar包引用到项目中去。

六、使用Jar包

和引用第三方库的用法一样,只需要将刚刚上传jar包的坐标写对后就可以使用:

compile(“com.niubi:util:latest.integration”)

当然,在仓库依赖地址中,我们需要加入自己的Maven私服地址:

// 【仓库设置】 repositories { // 使用本地仓库 mavenLocal() // 使用团队私服仓库 maven { url “http://xxx:6005/repository/GfptLib/” } maven { url “http://xxx:6005/repository/maven-public/” } // 使用 Gradle 的自身默认配置加载仓库 mavenCentral() }

重新编译一下,就可以下载到我们刚刚上传的Jar包了。

到此这篇关于Docker轻松搭建Nexus私有仓库,实现Maven私服的文章就介绍到这了,更多相关Docker搭建Nexus私有仓库内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/u012558210/article/details/122696428

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:42u标准机柜尺寸是多少 42u标准机柜尺寸价格

2023-3-9 20:16:45

建站知识

小知识:docker实现MySQL主从双备的示例代码

2023-3-9 20:31:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索